2010-01-12 10 views

risposta

7

Un motivo: se la classe implementa un'interfaccia (o estende una classe astratta con metodi pubblici astratti), non è possibile ridurre la visibilità di tali metodi implementati.

+3

Anche le sottoclassi pubbliche erediteranno i metodi come pubblici. –

6

La classe non pubblica potrebbe implementare un'interfaccia pubblica. Ciò significherebbe che le classi esterne al pacchetto non potrebbero creare un'istanza di questa classe o creare riferimenti di quel tipo, ma sarebbero comunque in grado di invocare metodi su di essa se ha passato un'istanza.

Ad esempio, una classe di factory pubblica potrebbe creare un'istanza di una classe non pubblica nel suo pacchetto e restituirla.

+0

Anche un'interfaccia non pubblica ha metodi pubblici. –

0

È una bella combinazione di sicurezza e usabilità in uno.

Vorrei contrassegnare una classe con accesso predefinito se desidero che abbia un, bene, accesso al pacchetto (in modo che nessun altro pacchetto possa usarlo o cambiare il codice) e contrassegnando un metodo pubblico, sto facendo il metodo accessibile a tutte le altre classi indipendentemente dal pacchetto a cui appartengono.

Come può essere d'aiuto? Una classe sufficientemente sicura per eseguire tutte le complesse implementazioni del codice e abbastanza utilizzabile da fornire l'output all'utente che desidera utilizzarlo.

Come può usarlo? Bene, si scrive codice per aiutarli a usarlo creando una classe pubblica che estende questa classe predefinita. Si istanzia questa sottoclasse pubblica in qualsiasi pacchetto (dopo l'importazione di corso) e questo ha tutti i metodi contrassegnati come pubblici.

Hai una classe che fa la tua magia che tutti possono usare senza dare a nessun altro un indizio di come hai fatto!