[Java] 내부 클래스와 익명 클래스

Jinsung·2021년 5월 27일
0

JAVA

목록 보기
11/12
post-thumbnail

내부 클래스:Inner

클래스 안에 또 다른 클래스를 선언하는 것으로 이렇게 하면 두 클래스의 멤버에 쉽게 접근할 수 있다

내부 클래스

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");
		}
	}
	
}

익명 클래스:Anonymous

이름이 없는 클래스로 주로 메서드르르 재저으이 하는 목적으로 사용되며 익명클래스는 인터페이스나 추상클래스에서 주로 이용된다.

익명 클래스

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

익명 클래스
재정의

0개의 댓글