Подтвердить что ты не робот

Java. Разница между классом ClassName и общедоступным классом ClassName.

Какая разница между

class x {
    //code here
}

и

public class x {
    //code here
}

Иногда я вижу примеры в Интернете, и они будут public class вместо class, и все они простые программы. Я использую class для своих назначений, и все остальные

4b9b3361

Ответ 1

Первый приведет к тому, что вашему классу будет присвоена видимость по умолчанию, то есть package-private (то есть: доступна в пределах того же package).

Второй делает его public, то есть видимым для любого другого класса.

Справка: Управление доступом к членам класса

Ответ 2

Самый простой способ:

если все, что у вас есть, находится в одном пакете (пакет com.myschool.myapp в верхней части каждого файла), тогда нет никакой разницы, но если что-то хочет получить доступ к чему-либо вне его, тогда он должен быть общедоступным.

Например, "String" находится в "java.lang", ваш пакет почти наверняка не находится в java.lang, поэтому, если строка не была общедоступной, вы не можете получить к ней доступ.

Ответ 3

  • Первая - это "видимость пакета" или "видимость по умолчанию", где класс доступен только для классов в одном пакете.
  • Последний является "общедоступной видимостью", где класс видим для любого другого класса.

Также существуют следующие модификаторы видимости для членов и методов и внутренних классов:

  • "Защищенная видимость" совпадает с пакетом, за исключением того, что любой класс который наследует класс, определенный защищенной областью, также может получить доступ он.
  • "Частная видимость" означает, что класс доступен только для сам по себе.

Ответ 4

Первый будет классом по умолчанию, т. к. он не может быть доступен ни в одном другом пакете, кроме самого себя, но может быть доступен другим классам в одном пакете.

Вторая делает его общедоступным, т.е. вы можете получить к нему доступ из любого класса любого пакета, как если бы вы обращались к String и Array, которые относятся к различным пакетам.

Помните, мы говорим о доступных из пакетов не класса.

Что касается, И тогда: Если у меня есть класс X (запишите имя класса), который не объявлен как открытый, могу ли я иметь переменные открытого экземпляра (EG public String name;) в нем?;)

Да, конечно, вы можете иметь переменные публичного экземпляра в непубличном классе.