Java内部クラスと匿名クラス
内部クラス
クラスに別のクラスを宣言すると、2つのクラスのメンバーに簡単にアクセスできます.
クラス間でデータを共有できる点は良いように見えますが、論理が複雑であればあるほどエラーが発生しやすくなります.
public class OuterClass {
int num = 10;
String str1 = "Java";
static String str11 = "world";
public OuterClass() {
System.out.println("OuterClass constructor");
}
class InnerClass {
int num = 100;
String str2 = str1;
public InnerClass() {
System.out.println("InnerClass constructor");
}
}
static class SInnerClass {
int num = 1000;
// static 클래스는 외부 클래스 멤버에 접근 불가
String str3 = str11;
public SInnerClass() {
System.out.println("static InnerClass constructor");
}
}
}
public class Main {
public static void main(String[] args) {
OuterClass oc = new OuterClass();
System.out.println("oc.num : " + oc.num);
System.out.println("oc.str1 : " + oc.str1);
System.out.println();
// inner 클래스
OuterClass.InnerClass in = oc.new InnerClass();
System.out.println("in.num : " + in.num);
System.out.println("in.str2 : " + in.str2);
System.out.println();
// static 클래스
OuterClass.SInnerClass si = new OuterClass.SInnerClass();
System.out.println("si.num : " + si.num);
System.out.println("si.str3 : " + si.str3);
System.out.println();
}
}
これは実務ではあまり使われない符号化方法である.匿名クラス
名前のないクラスは、主に
재정의 하는 목적
を使用します.public class AnonymousClass {
public AnonymousClass() {
System.out.println("AnonymousClass constructor");
}
public void method() {
System.out.println("--AnonymousClass's method START--");
}
}
package inner;
public class Main {
public static void main(String[] args) {
// 익명 클래스는 딱 한번만 실행된다.
new AnonymousClass() {
@Override
public void method() {
System.out.println("--AnonymousClass's Override method START --");
}
}.method();
}
}
匿名クラスは主に인터페이스
または추상클래스
で使用される.Reference
この問題について(Java内部クラスと匿名クラス), 我々は、より多くの情報をここで見つけました https://velog.io/@conficker77/Java-내부-클래스와-익명-클래스テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol