실전 자바 강좌 (ver.2018) - 초보부터 개발자 취업까지!! 강의를
개인공부하며 정리하는 용도의 포스팅입니다.
학습목표
-
클래스 안에 또 다른 클래스를 선언하는 방법과 이름이 없는 클래스를 선언하는
방법에 대해 학습
내부(inner)클래스
클래스 안에 또 다른 클래스를 선언하는 것으로 이렇게 하면 두 클래스의 멤버에 쉽게 접근할수 있다.
public class MainClass {
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 inner 클래스
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 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;
String str3 = str11;
public SInnerClass() {
System.out.println("static InnerClass constructor");
}
}
}
OuterClass oc = new OuterClass();
->public class OuterClass
OuterClass.InnerClass in = oc.new InnerClass();
->class InnerClass
OuterClass.SInnerClass si = new OuterClass.SInnerClass();
->static class SInnerClass
익명(anonymous)클래스
이름이 없는 클래스로 주로 메서드를 재정의하는 목적으로 사용된다.
package lec20Pjt001;
public class AnonymousClass {
public AnonymousClass() {
System.out.println("AnonymousClass constructor");
}
public void method() {
System.out.println("-- AnonymousClass's method START --");
}
}
new AnonymousClass() {
@Override
public void method() {
System.out.println("-- AnonymousClass's Override method START --");
};
}.method();
결과
AnonymousClass constructor
-- AnonymousClass's Override method START --
Comments