こんにちは、ハブロフスク! 私はかなり長い間Javaでプログラミングしており、ネストされたクラスを頻繁に使用していますが、最近、静的なネストされたクラスに出会い、それについてほとんど何も知らないことに気付きました。 したがって、私はこれを理解し、私の知識を体系化し、同時にこの知識をあなたと共有することにしました。
ネストされたクラス(InnerClass)
public class OuterClass { public class InnerClass{ } }
それから見える:
-OuterClassのすべての(プライベートであっても)プロパティとメソッドは、規則的で静的です。
-OuterClass親のパブリックおよび保護されたプロパティとメソッドは、規則的で静的です。 つまり、OuterClassに表示されるものです。
それを見ることができます:
-アクセス修飾子による。
継承可能:
-通常のクラス。
-OuterClassとその祖先の同じ内部クラス。
継承される場合があります:
-OuterClassとその子孫の同じ内部クラス。
インターフェースを実装できます
以下が含まれる場合があります:
-通常のプロパティとメソッドのみ(静的ではない)。
このクラスのインスタンスは次のように作成されます。
OuterClass outerClass = new OuterClass(); OuterClass.InnerClass innerClass = outerClass.new InnerClass();
静的ネストクラス(StaticInnerClass)
public class OuterClass { public static class StaticInnerClass{ } }
それから(クラス自体)が表示されます:
-OuterClass静的プロパティとメソッド(プライベートも含む)。
-親のOuterClassの静的プロパティとメソッドはパブリックであり、保護されています。 つまり、OuterClassに表示されるものです。
インスタンスから表示されます:
-OuterClassのすべての(プライベートであっても)プロパティとメソッドは、規則的で静的です。
-OuterClass親のパブリックおよび保護されたプロパティとメソッドは、規則的で静的です。 つまり、OuterClassに表示されるものです。
それを見ることができます:
-アクセス修飾子による。
継承可能:
-通常のクラス。
-OuterClassとその祖先の同じ静的内部クラス。
継承される場合があります:
-任意のクラス:
-入れ子
-ネストされていません
-静的
- 静的ではありません!
インターフェースを実装できます
以下が含まれる場合があります:
-静的プロパティとメソッド。
-静的なプロパティおよびメソッドではありません。
このクラスのインスタンスは次のように作成されます。
OuterClass.StaticInnerClass staticInnerClass = new OuterClass.StaticInnerClass();
ローカルクラス(LocalClass)
public class OuterClass { public void someMethod(){ class LocalClass{ } } }
それから見える:
-OuterClassのすべての(プライベートであっても)プロパティとメソッドは、規則的で静的です。
-OuterClass親のパブリックおよび保護されたプロパティとメソッドは、規則的で静的です。 つまり、OuterClassに表示されるものです。
それを見ることができます:
-定義されているメソッドでのみ。
継承可能:
-通常のクラス。
-OuterClassとその祖先の内部クラス。
-同じメソッドで定義された同じローカルクラス。
継承される場合があります:
-同じメソッドで定義された同じローカルクラスによって。
インターフェースを実装できます
以下が含まれる場合があります:
-通常のプロパティとメソッドのみ(静的ではない)。
匿名クラス(名前なし)
名前のないローカルクラス。 クラスを継承するか、インターフェイスを実装します。
public class OuterClass { public void someMethod(){ Callable callable = new Callable() { @Override public Object call() throws Exception { return null; } }; } }
それから見える:
-OuterClassのすべての(プライベートであっても)プロパティとメソッドは、規則的で静的です。
-OuterClass親のパブリックおよび保護されたプロパティとメソッドは、規則的で静的です。 つまり、OuterClassに表示されるものです。
それを見ることができます:
-定義されているメソッドでのみ。
継承できません
以下が含まれる場合があります:
-通常のプロパティとメソッドのみ(静的ではない)。
それだけです 私はあなたのコメントを楽しみにしています:私がカバーしなかった不正確さやエラーなどは何ですか。
この記事が多くの人に役立つことを願っています。