Possiamo creare public static classe astratta in java?

Ho fatto una ricerca in google per qualcosa, e ho ottenuto un codice come

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

È una classe nidificata, ma chiedo come potrebbe essere accessibile ?

InformationsquelleAutor Yasir Khan | 2012-09-13

 

2 Replies
  1. 19

    Deve essere una classe nidificata: la parola chiave static sul classe (non i metodi all’interno di essa) viene utilizzato solo (e sintatticamente valido) per le classi nidificate. Tali membro statico classi (per l’utilizzo di Java in un guscio di noce comune nomenculture) contenere alcun riferimento all’allegando classe, e quindi possono accedere solo i campi statici e metodi all’interno di esso (a differenza di quelli non di quelle statiche; vedi riepilogo delle classi nidificate in Java (noto anche come inner class).

    Può essere accessibile come questo:

    public class EnclosingClass {
      public static abstract class LocationResult{
        public abstract void gotLocation(Location location);
      }
    }
    
    EnclosingClass.LocationResult locationResult = ...
    • O potrebbe essere prorogato di altri classi nidificate.
    • come un principiante imparare non siamo in grado di creare un’istanza di una classe astratta.c’è qualche documentazione di materiale per imparare questo?
    • È possibile in forma di una classe anonima.
    • come qualsiasi altra classe astratta, è necessario ereditare e creare una sottoclasse concreta che è possibile creare un’istanza. Una variabile può essere del tipo della superclasse, e mantenere un riferimento alla sottoclasse – questo è chiamato upcasting.
    • perché stiamo usando la parola chiave static qui?
    • Ho modificato la risposta, per spiegare meglio il perché la parola chiave static c’è.

  2. 3

    Solo classi nidificate può essere statico. Così facendo è possibile utilizzare la classe nidificata senza avere un’istanza della classe esterna.

    Così si potrebbe creare una classe che estende utilizzando extends Mainclass.LocationResult e utilizzarlo con Mainclass.LocationResult instance = ...

Lascia un commento