Javaのネストされたクラス

画像



こんにちは、ハブロフスク! 私はかなり長い間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に表示されるものです。



それを見ることができます:

-定義されているメソッドでのみ。



継承できません



以下が含まれる場合があります:

-通常のプロパティとメソッドのみ(静的ではない)。



それだけです 私はあなたのコメントを楽しみにしています:私がカバーしなかった不正確さやエラーなどは何ですか。

この記事が多くの人に役立つことを願っています。



All Articles