2013-04-24 21 views
5

Zaczynam uczyć się języka Java i stworzyłem moją pierwszą funkcję hello world w środowisku Eclipse. Zauważyłem, że następujące dwie funkcje, zarówno w domyślnym pakietem folderze src w moim projekcie Java, wydają się zrobić to samo:Czy niezadeklarowane klasy w Javie są publiczne?

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

i

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

Zarówno powodzeniem drukować " Witaj świecie!' do konsoli.

Czytałem trochę o różnych typach klas, ale nie jestem pewien, jaki typ klasy chciałbym zadeklarować za pomocą pierwszej funkcji. Jaka jest różnica między tymi dwiema funkcjami? Czy java sprawia, że ​​moje cześć światowej klasy w pierwszym przypadku jest publiczne?

+4

są pakietami prywatnymi – soulcheck

Odpowiedz

10

która nie deklaruje siebie jako public jest package protected, co oznacza, że ​​class jest dostępny tylko w tym pakiecie.

Bardzo przydatne podsumowanie modyfikatorów dostępu na stackoverflow. Więcej na oracle

Przykład:

Więc powiedzmy, że mają następującą strukturę pakiet:

com 
    stackoverflow 
    pkg1 
     public Class1 
     Class2 
    pkg2 
     OtherClass 

Class2 może być używany tylko przez Class1, ale nie przez OtherClass

0

jest chroniony klasę, nie można uzyskać dostęp do tej klasy spoza tego package.

Jeżeli nie określił niczego swym domyślnie chroniony

1

To zajęło mi około 2 sekund, aby znaleźć na Google:

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

w odpowiedzi na swoje pytanie, domyślnie modyfikator jest package protected , co oznacza, że ​​można uzyskać do niego dostęp tylko w pakiecie, ale następnym razem proszę wykonać pewne badania przed wysłaniem pytania, ponieważ zajęło to więcej czasu, aby napisać pytanie, które musiałoby przeszukać

Powiązane problemy