Я заметил, что если не писать public
перед классом его работы такие же, как public class
. Я не понимаю, почему так? Он должен показывать ошибку, если я не объявляю класс как public
, private
или protected
. Но он отлично работает. Какова причина?В чем разница между «public class» и «class»?
ответ
public
, protected
и private
- модификаторы доступа. Публикация означает, что к объекту может быть доступен любой класс, защищенный подклассом, закрытый самим классом, ни один модификатор не означает «защищенный пакет», поэтому к объекту могут обращаться классы из одного и того же пакета.
Тема - это класс, метод, переменная-член.
Я заметил, что, если вы не публикуете публикацию перед классом, его работы аналогичны публичному классу.
Нет, это не так. Если это не общедоступно, класс не будет виден другому коду, который не находится в одном пакете. Доступность по умолчанию (которая не может быть явно указана) заключается в том, что класс (или другой элемент) доступен только для другого кода внутри одного пакета.
Для получения более подробной информации вы должны прочитать Java Language Specification section 6.6 и Java Tutorial (Controlling Access to Members of a Class).
Классы package private
по умолчанию (как указано here), поэтому он не ведет себя одинаково. Вы просто думаете, что это потому, что вы не пытались использовать свой класс из другого пакета.
Для деклараций классов только два В комплекте ключевые слова:
- общественного .example: общественный класс Student {// ...}
- частный пакет (по умолчанию) .example: класс Примечание {// ...}. Это видно только в его пакете.
Вы можете использовать частные и защищенные только в том случае, если вы объявите член внутри класса. Пример:
public class Student{
protected Note note;
}
Если вы не даете модификатор доступа, это по умолчанию пакет частного доступа. Класс недоступен вне пакета. В идеале JLS должен был включать ключевое слово для доступа к пакету, чтобы избежать путаницы и непредвиденных последствий.
Что-то подобное,
default class Student{}
Там должен быть только один публичный класс в .java исходный файл и имя файла должно совпадать с этим общим классом.
Аналогичный вопрос задан раньше на SO. here
Он работает так же, только потому, что вы работаете только с одним файлом и в одном пакете.
Если у вас более одного пакета, то у вас есть проблема. Класс, который не имеет «public» перед именем класса, не может быть создан в другом пакете. Вы не можете использовать его конструктор.Вы просто не можете получить к нему доступ за пределами пакета, в который был создан класс.
- 1. В чем разница между `` Class` и class`
- 2. Разница между «.class» и «.class, .class .class»?
- 3. .gitignore разница между * .class и .class
- 4. Public Class и App_Code
- 5. В чем разница между `String.class` и` new Class [] {String.class} `?
- 6. Какая разница между PHP static class и singleton class
- 7. В чем разница между атрибутами class и styleClass в JSF?
- 8. В чем разница между CSS3: root pseudo class и html?
- 9. В чем разница между использованием Object.assign и class/extends?
- 10. В чем разница между атрибутами class и styleClass?
- 11. В чем разница между @class Foo и импортом «Foo.h»?
- 12. В чем разница между Enum и Constant Java class?
- 13. В чем разница между enum struct и enum class?
- 14. public static class vs static class
- 15. Разница между img.my_class и .class> my_class
- 16. CSS: Разница между Tag.class и .class Tag
- 17. Java public class Plane
- 18. Public Class InstantiationException
- 19. Разница между сообщением «Class # message» и «Class.message»
- 20. В чем разница между [Class new] и [[Class alloc] init] в iOS?
- 21. Java: разница между «CustomClass1» и «CustomClass1.class»?
- 22. Разница между enum и enum class?
- 23. Class и ID разница
- 24. разница между $ ("# ID .class") и $ ("класс.", $ ("# Идентификатор"))
- 25. Разница между Private Sub, Function и Class
- 26. В чем разница между Root Class & Base Class в Objective-C?
- 27. В чем разница между двумя селекторами css [class^= test] vs [class | = test]
- 28. public static class или const
- 29. Интерфейсы vs Public Class Members
- 30. Retrive public fields from class
[Это предоставит вам адекватный ответ.] (Http://stackoverflow.com/a/16728381/1079354) – Makoto
Вы можете ссылаться на эту ссылку , предоставляя те же самые знания: http://stackoverflow.com/questions/614818/what-is-the-difference-between-public-private-protected-and-nothing/614844#614844 – Deepak