2013-04-24 3 views
5

Я начинаю изучать java и создал свою первую глобальную функцию hello в Eclipse. Я заметил, что следующие две функции, как в пакете по умолчанию в папке Src в моем Java проекта, кажется, делают то же самое:Являются ли незадекларированные классы в Java общедоступными?

class HelloWorld { 
    public static void main(String[] args){ 
     System.out.println("Hello World!"); 
    } 
} 

и

public class HelloWorld { 
    public static void main(String[] args){ 
     System.out.println("Hello World!"); 
    } 
} 

Оба успешно напечатать ' Привет мир!' на консоль.

Я немного читал о разных типах классов, но не уверен, какой тип класса я бы декларировал с помощью первой функции. В чем разница между этими двумя функциями? Является ли java для моего приветствия мировым классом в первом случае публичным?

+4

они являются частными – soulcheck

ответ

10

Class, который не объявляет себя как public, является package protected, что означает, что class доступен только в этом пакете.

Очень полезное резюме модификаторов acccess на stackoverflow. Больше на oracle

Пример:

Итак, у вас есть следующая структура пакета:

com 
    stackoverflow 
    pkg1 
     public Class1 
     Class2 
    pkg2 
     OtherClass 

Class2 может быть использован только Class1, но не OtherClass

1

Это все о классе видимость!

Класс может быть объявлен с модификатором public, и в этом случае этот класс будет виден всем классам. Если класс не имеет модификатора (по умолчанию, также известный как пакет-частное), она видна только в его собственном пакете

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

0

Он защищен класс, вы не можете получить доступ к этому класса из СТОРОНА package.

Если вы что-нибудь его не указать, по умолчанию защищенный

1

Это заняло у меня около 2 секунд, чтобы найти на Google:

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

В ответ на свой вопрос, модификатор по умолчанию package protected , что означает, что к нему можно получить доступ только в пакете, но в следующий раз, пожалуйста, сделайте некоторое исследование перед публикацией вопроса, так как потребовалось больше времени, чтобы написать вопрос о том, что он должен будет искать

Смежные вопросы