2013-04-24 17 views
5

Sto iniziando a imparare java e ho creato la mia prima funzione ciao mondo in Eclipse. Ho notato che le seguenti due funzioni, sia nel pacchetto predefinito della cartella src nel mio progetto java, sembrano fare la stessa cosa:Le classi non dichiarate sono pubbliche in Java?

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

e

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

Sia stampare con successo ' Ciao mondo!' alla console.

Ho letto un po 'di diversi tipi di classe, ma non sono sicuro del tipo di classe che dichiarerei con la prima funzione. Qual è la differenza tra queste due funzioni? Java rende il mio ciao world class nel primo caso pubblico?

+4

sono pacchetti-privati – soulcheck

risposta

10

Class che non si sta affermando come public è package protected, il che significa che il class sia accessibile solo a quel pacchetto.

Riepilogo molto utile dei modificatori di ammissione su stackoverflow. Altro oracle

Esempio:

Quindi diciamo che si ha la seguente struttura del pacchetto:

com 
    stackoverflow 
    pkg1 
     public Class1 
     Class2 
    pkg2 
     OtherClass 

Class2 può essere utilizzato solo da Class1, ma non da OtherClass

1

E 'tutto sulla visibilità della classe!

Una classe può essere dichiarata con il modificatore pubblico, nel qual caso tale classe è visibile a tutte le classi in tutto il mondo. Se una classe ha alcun modificatore (il valore predefinito, noto anche come pacchetto-privato), è visibile solo all'interno del proprio pacchetto

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

0

E 'protetto di classe, non è possibile accedere quella classe fuori dal lato della package.

Se non si specifica nulla la sua da impostazione predefinita protetto

1

Questo mi sono voluti circa 2 secondi per trovare il Google:

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

In risposta alla tua domanda, il modificatore di default è package protected , il che significa che è possibile accedervi solo all'interno del pacchetto, ma la prossima volta fai qualche ricerca prima di postare una domanda, poiché ti ci è voluto più tempo per scrivere la domanda che avrebbe dovuto cercare

Problemi correlati