2012-09-13 15 views
13

ero alla ricerca in Google per qualcosa e ho ottenuto un codice comePossiamo creare una classe astratta statica pubblica in java?

public static abstract class LocationResult{ 
    public abstract void gotLocation(Location location); 
} 

Si tratta di una classe annidata ma chiedo come potrebbe essere accessibile?

+0

Puoi controllare qui http://stackoverflow.com/questions/4579305/can-we-ststantiate-abstract-class –

risposta

16

Deve essere una classe nidificata: la parola chiave statica nella classe (non i metodi al suo interno) viene utilizzata solo (e sintatticamente valida) per le classi nidificate. Tali classi di membro statiche (per utilizzare Java nella nomencultura comune di Nutshell) non hanno alcun riferimento alla classe che le racchiude e pertanto possono accedere solo ai campi e ai metodi statici al suo interno (a differenza di quelli non statici; vedere qualsiasi riepilogo delle classi nidificate in Java (noto anche come classi interne)

può essere accessibile in questo modo:..

public class EnclosingClass { 
    public static abstract class LocationResult{ 
    public abstract void gotLocation(Location location); 
    } 
} 

EnclosingClass.LocationResult locationResult = ... 
+2

Oppure potrebbe essere esteso da altre classi annidate. – assylias

+0

come novellino ho imparato che non possiamo creare un'istanza di una classe astratta. C'è qualche documentazione di materiale per imparare questo? –

+0

@YasirKhan È possibile sotto forma di classe anonima. – assylias

3

Solo classi annidate possono essere statici in questo modo è possibile utilizzare la classe annidata senza avere un'istanza della classe esterna

Quindi è possibile creare una classe estendendolo utilizzando extends Mainclass.LocationResult e usalo con Mainclass.LocationResult instance = ...

Problemi correlati