概要
最近Pythonを学習し、Pythonがより多くの継承をサポートしていることを発見しました。これは、内部クラスによって実装されたこのメカニズムを思い出させます。この記事は、内部クラスを通じてより多くの継承を達成する方法ではなく、内部クラスのタイプと使用方法を要約することです。
Java内部クラスは次のように分割されています。
内部クラスは、Androidソースコードで大量に使用されます。
次に、これらの内部クラスをそれぞれ紹介します。
非スタック内部クラス
クラスが別のクラスの非スタックメンバーである場合、このクラスは非stat類の内部クラスです。
非スタット内部クラスを作成する例の例は次のとおりです。
class outclass {class innerclass {}}
Javacをコンパイルしたとき、2つの.classファイルが生成されたことがわかりました:outclass.classとoutclass $ innerclass.class。下の図に示すように:
外部クラスの非stat類の方法からの内部クラス
外部クラスの内部クラスに直接アクセスし、クラスにオブジェクトを適用してメソッドを呼び出します。例コードは次のとおりです。
public class outclass {public void makeinner(){new innerclass()seeouter(); .makeinner();} class innerclass {public void seeouter(){system.out.println(a);}}}}結果は次のとおりです。
0
外部クラスの静的方法からの内部クラス
外部クラスで内部クラスに直接アクセスすることは比較的簡単ですが、外部クラスで内部クラスを使用する場合は、NWの内部クラス名を直接使用できません。
outclass.innerclass innerclass = new outclass();
言い換えれば、最初に非定位内部クラスをインスタンス化する必要があり、次にインスタンス化された内部クラスが外部クラスオブジェクトを介して使用されます。例コードは次のとおりです。
public class outclass {interclass boid boid = new innerclass(); .innerclass innerclass = new anterclass();
結果の実行:
01
内部クラスのこの参照
通常のクラスは、これと内部クラスで現在のオブジェクトを参照できます。しかし、内部クラスが外部クラスの現在のオブジェクトを引用したい場合はどうなりますか?次の方法を使用できます。
外部名
例コードは次のとおりです。
public class outclass {interclass boid boid = new innerclass(); .innerclass innerclass = new anterclass(); }}}
静的内部クラス
非スタット内部クラスは上記で紹介されています。
静的な内部クラスは、静的な内部クラスの形式の静的メンバーの役割と非スタック内部クラスの作成ですが、クラスの前に追加の静的修飾子があります。
静的修飾子を使用して外部クラスを変更できないことに注意してください。
例コードは次のとおりです。
class outclass {static class innerclass {}}
Javacコマンドをコンパイルすると、下の図に示すように、2つの.classファイルがあることがわかります。
外部クラスの非統一方法からの静的内部クラスの内部クラス
外部クラスから静的な内部クラスにアクセスすることは、外部カテゴリの非スタック内部クラスと同じです。ただし、現時点では、静的な内部クラスは外部クラスの静的メンバーのみにアクセスでき、非スタットメンバーにアクセスできないことに注意してください。
例コードは次のとおりです。
Public Class Outclass {private int a = 0 = 1; outclass oclass = new outclass.makeinner();} static innerclass {system.out.out.println(a); println(b);}}}
実行結果は次のとおりです。
outclass $ innerclass@79a3400
外部静的法からの静的内部クラスの内部分類
知らせ:
静的な内部クラスは外部クラスの静的メンバーであり、静的メンバーはインスタンス化されたオブジェクトのオブジェクトではなく、クラスにバインドされるためです。したがって、外部クラスの静的方法の内部クラスは、最初に外部クラスをインスタンス化する必要はありません。
例コードは次のとおりです。
Public Class Outclass {private int a = 0 = 1; outclass oclass = new outclass.makeinner(); this); out.println(a);
匿名の内部クラス
匿名の内部クラスは、Androidアプリケーションの開発に浸水しています。
匿名の内部クラスは、これがカテゴリを持たない内部クラスであることを知ることができます。これは通常、コードを簡素化するために使用されます。
Javaを書く学生はスレッドを使用すると、実行可能なオブジェクトまたは匿名の内部クラスを渡すことができると思います。例コードは次のとおりです。
public class outclass {public void testanonymousclass(){thread t = new runnable(){@override public void run(){for(int i = 0; i <10; i ++){system.out.printlnn (i)try {slead.sleep(500);} 。
実行結果は次のとおりです。
別のスレッドが実行されています...