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に表示されるものです。

それを見ることができます:
-定義されているメソッドでのみ。

継承できません

以下が含まれる場合があります:
-通常のプロパティとメソッドのみ(静的ではない)。

それだけです 私はあなたのコメントを楽しみにしています:私がカバーしなかった不正確さやエラーなどは何ですか。
この記事が多くの人に役立つことを願っています。

Source: https://habr.com/ru/post/J342090/


All Articles