2012-09-13 7 views
13

私が何かをグーグルで検索して、私はpublic static abstract classをjavaで作成できますか?

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

ようなコードは、それが入れ子になったクラスだが、それがアクセスする方法を疑問に思ってしまいましたか?

+0

こちらをご覧くださいhttp://stackoverflow.com/questions/4579305/can-we-instantiate-abstract-class –

答えて

16

これはネストされたクラスでなければなりません。クラスのstaticキーワード(その中のメソッドではありません)は、ネストされたクラスに対してのみ(構文的に有効)使用されます。そのような静的メンバークラス(Nutshellの一般的な用語でJavaを使用する)は、囲むクラスへの参照を保持していないので、静的なフィールドとその中のメソッドにしかアクセスできません(静的でないものとは異なります。 (また、内部クラスとして知られている)

それは、このようなアクセスすることができます:。

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

EnclosingClass.LocationResult locationResult = ... 
+2

または他のネストされたクラスで拡張することができます。 – assylias

+0

初心者として私は抽象クラスのインスタンスを作成することができないことを学びます。これを学ぶための資料はありますか? –

+0

@ YasirKhan匿名クラスの形式で指定することができます。 – assylias

3

のみネストされたクラスは、静的することができますので、外部クラスのインスタンスがなくても、ネストされたクラスを使用することができます。これにより。

したがって、を使用してクラスを拡張することができますと一緒に使用してくださいMainclass.LocationResult instance = ...

関連する問題