클래스 안에 또 다른 클래스를 선언하는 것으로 이렇게 하면 두 클래스의 멤버에 쉽게 접근할 수 있다
package inheritance;
public class OuterClass {
int num = 10;
String str1 = "java";
static String str11 = "world";
public OuterClass() {
System.out.println("outerclass");
}
class InnerClass{ // 내부 클래스
int num = 100;
String str2 = str1;
public InnerClass() {
System.out.println("innerclass");
}
}
static class SInnerClass{ // 내부 클래스
int num = 1000;
String str3 = str11;
public SInnerClass() {
System.out.println("static innerclass");
}
}
}
이름이 없는 클래스로 주로 메서드르르 재저으이 하는 목적으로 사용되며 익명클래스는 인터페이스나 추상클래스에서 주로 이용된다.
package inheritance;
public class AnonymousClass {
public AnonymousClass() {
System.out.println("익명 클래스");
}
public void method() {
System.out.println("method");
}
}
package inheritance;
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();
OuterClass.InnerClass in = oc.new InnerClass(); // 내부클래스 innerclass
System.out.println("in.num :" + in.num);
System.out.println("in.str2 :" + in.str2);
System.out.println();
OuterClass.SInnerClass si = new OuterClass.SInnerClass(); // 내부클래스 sinnerclass
System.out.println("in.num :" + si.num);
System.out.println("in.str3 :" + si.str3);
System.out.println();
new AnonymousClass() { // 익명 클래스
public void method() {
System.out.println("재정의");
};
}.method(); // 접근자 이용 method 출력
}
}
결과값
outerclass
oc.num :10
oc.str1 :java
innerclass
in.num :100
in.str2 :java
static innerclass
in.num :1000
in.str3 :world
익명 클래스
재정의