2022/02/23 Javaの各種機能
3495 ワード
複数の内部クラスの定義とタイプ.
内部クラスとは?(inner class)
クラス内でクラスを宣言する場合を内部クラスと呼びますクラスで宣言されたクラスは、通常、クラスを囲む外部クラスと密接に関連しており、他の外部クラスが使用可能な場所がない場合は、内部クラスとして使用されると宣言されています. ネストクラス とも呼ばれる.内部クラスのタイプ
インスタンス内部クラス、静的内部クラス、ローカル内部クラス、匿名内部クラス インスタンス内部クラス内部で使用されるクライスラー宣言(プライベートとして宣言することを推奨し、プライベートとして宣言しない場合は外部で使用できるため、プライベートとすべき). 外部クラス(静的内部クラスとは異なる)を作成した 非プライベート内部クラスは、他の外部クラスにおいて を作成することができる.は、外部クラス を作成するために使用することができる.静的変数、静的方法 を使用
静的内部クラスの例
メソッドで定義および使用されるクラス、例えば領域変数 メソッドの呼び出しが完了すると、メソッドで使用する領域変数の有効性は から消える.メソッドが呼び出された後に使用する必要がある場合があります.したがって、ゾーン内部クラスで使用するメソッドのゾーン変数またはパラメータは、最終的に と宣言されます.
匿名の内部クラス名前のないクラス(上記の地域内クラスを実際に呼び出すMyRunnableクラス名がない) クラスの名前をスキップし、主にインタフェースまたは抽象クラスを実装し、 を返します.インタフェースまたは抽象クラスデータ型の変数に直接クラスを作成するか、または領域内部クラスのメソッドでクラス を作成して戻すことができる.ウィジェット用の組み込みプロセッサ
内部クラスとは?(inner class)
クラス内でクラスを宣言する場合を内部クラスと呼びます
インスタンス内部クラス、静的内部クラス、ローカル内部クラス、匿名内部クラス
OutClass outClass=new OutClass( );
OutClass.InClass inClass=outClass.new InClass();
サンプルコードclass OutClass{
private int num=10;
private static int sNum=20;
private InClass inClass;
public OutClass() {
inClass = new InClass();
}
private class InClass{
int iNum = 100;
void inTest(){
System.out.println("OutClass num = "+num+"(외부 클래스 의 인스턴스 변수)");
System.out.println("OutClass sNum = "+sNum+"(외부 클래스의 스태틱 변수)");
System.out.println("InClass inNum = "+iNum+ "(내부 클래스의 인스턴스 변수)");
}
}
public void usingClass(){
inClass.inTest();
}
}
public class InnerTest {
public static void main(String[] args) {
OutClass outClass=new OutClass();
outClass.usingClass();
}
}
静的内部クラス静的内部クラスの例
class OutClass{
private int num=10;
private static int sNum=20;
private InClass inClass;
public OutClass() {
inClass = new InClass();
}
private class InClass{
int iNum = 100;
void inTest(){
System.out.println("OutClass num = "+num+"(외부 클래스 의 인스턴스 변수)");
System.out.println("OutClass sNum = "+sNum+"(외부 클래스의 스태틱 변수)");
System.out.println("InClass inNum = "+iNum+ "(내부 클래스의 인스턴스 변수)");
}
}
public void usingClass(){
inClass.inTest();
}
static class InStaticClass {
int iNum=100;
static int sInNum =200;
void inTest(){
System.out.println("InClass num = "+iNum+"(내부 클래스 의 인스턴스 변수)");
System.out.println("OutClass sNum = "+sNum+"(외부 클래스의 스태틱 변수)");
System.out.println("InClass sNum = "+sInNum+ "(내부 클래스의 스태틱 변수)");
}
static void sTest(){
System.out.println("OutClass sNum = "+sNum+"(외부 클래스의 스태틱 변수)");
System.out.println("InClass sNum = "+sInNum+ "(내부 클래스의 스태틱 변수)");
}
}
}
public class InnerTest {
public static void main(String[] args) {
// OutClass outClass=new OutClass();
// outClass.usingClass();
OutClass.InStaticClass sInClass=new OutClass.InStaticClass();
sInClass.inTest();
OutClass.InStaticClass.sTest();
}
}
ローカルクラスメソッドで定義および使用されるクラス、例えば
匿名の内部クラス
Reference
この問題について(2022/02/23 Javaの各種機能), 我々は、より多くの情報をここで見つけました https://velog.io/@dolljang/20220223-자바의-다양한-기능들テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol