Ответ 1
Первый приведет к тому, что вашему классу будет присвоена видимость по умолчанию, то есть package-private
(то есть: доступна в пределах того же package
).
Второй делает его public
, то есть видимым для любого другого класса.
Какая разница между
class x {
//code here
}
и
public class x {
//code here
}
Иногда я вижу примеры в Интернете, и они будут public class
вместо class
, и все они простые программы. Я использую class
для своих назначений, и все остальные
Первый приведет к тому, что вашему классу будет присвоена видимость по умолчанию, то есть package-private
(то есть: доступна в пределах того же package
).
Второй делает его public
, то есть видимым для любого другого класса.
Самый простой способ:
если все, что у вас есть, находится в одном пакете (пакет com.myschool.myapp в верхней части каждого файла), тогда нет никакой разницы, но если что-то хочет получить доступ к чему-либо вне его, тогда он должен быть общедоступным.
Например, "String" находится в "java.lang", ваш пакет почти наверняка не находится в java.lang, поэтому, если строка не была общедоступной, вы не можете получить к ней доступ.
Также существуют следующие модификаторы видимости для членов и методов и внутренних классов:
Первый будет классом по умолчанию, т. к. он не может быть доступен ни в одном другом пакете, кроме самого себя, но может быть доступен другим классам в одном пакете.
Вторая делает его общедоступным, т.е. вы можете получить к нему доступ из любого класса любого пакета, как если бы вы обращались к String и Array, которые относятся к различным пакетам.
Помните, мы говорим о доступных из пакетов не класса.
Что касается, И тогда: Если у меня есть класс X (запишите имя класса), который не объявлен как открытый, могу ли я иметь переменные открытого экземпляра (EG public String name;) в нем?;)
Да, конечно, вы можете иметь переменные публичного экземпляра в непубличном классе.