2011-11-19 10 views

risposta

32

pacchetto. Sono visibili ad altre classi nello stesso pacchetto.

FWIW, di solito uso la mia annotazione no-op @Package su questi, solo per chiarire che so cosa sto facendo - che non ho dimenticato qualcosa. Anche se è l'impostazione predefinita, l'accesso al pacchetto è probabilmente usato meno in codice di alta qualità rispetto a qualsiasi altra delle tre possibilità - con una grande eccezione:

In alcuni stili di test delle unità, è consigliabile poter accedere a metodi o campi che sono normalmente privati. Un modo per fornire l'accesso è impostarli sull'accesso al pacchetto e inserire la classe di test dell'unità nello stesso pacchetto (ma di solito in un diverso albero di directory "test"). Alcuni sviluppatori pensano che questa sia una cattiva pratica - che in generale, è male usare i metodi privati ​​(o package-for-testing) nei test.

+4

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

23

In Java ci sono visibilità pubblica, protetta, di pacchetto (predefinita) e privata; ordinato dal più visibile al minimo.

Se non lo si specifica, per impostazione predefinita la visibilità è pacchetto.

package mytest.myvisibility; 

public class MyClass 
{ 
    public int myPublicInt; // visible to all 
    protected myProtectedInt; // visible to subclasses of MyClass and to other members of the mytest.myvisibility package 
    int myPackageInt; // visible only to other members of the mytest.myvisibility package 
    private int myPrivateInt; // visible only to MyClass objects. 
} 
+0

Questo non è esattamente vero (vedi Oracle doc fornito da @LukeH sopra). Gli articoli protetti sono anche visibili nel pacchetto corrente. – Kloe2378231

+3

aggiornato - elaborato sulla visibilità del "pacchetto" e reso l'ordine di visibilità coerente nella descrizione e nel codice di esempio. –

Problemi correlati