package ex0727;

public class Ex03 {
	public static void main(String[] args) {
		User3 ob = new User3();
		ob.sub();
		ob.disp();
	}
}

interface Test3 {
	public void print();
}

class User3 {
	public void sub() {
		// anonymous class 익명클래스
		// Test3 t = new Test3(); // 컴오류. 인터페이스는 객체 생성 불가
		// 익명 클래스는 컴파일하면 User3$1.class 이름의 클래스 파일이 생성(뒤 번호는 순서)
		Test3 t = new Test3() {
			// 익명 클래스에서 인터페이스 메소드 재정의
			@Override
			public void print() {
				System.out.println("sub...");
				
			}
		};
		t.print();
		
	}
	public void disp() {
		Test3 t = new Test3() {
			@Override
			public void print() {
				System.out.println("disp...");
			}
		};
		t.print();
	}
}

package ex0727;

public class Ex04 {

	public static void main(String[] args) {
		Object ob1 = new Object();
		System.out.println(ob1); // 클래스명@해쉬코드
		
		Object ob2 = new Object() {
			@Override
			public String toString() {
				// TODO Auto-generated method stub
				return "익명 클래스로 재정의...";
			}
		};
		System.out.println(ob2);

	}

}

익명 클래스 ?

  • 클래스 또는 인터페이스에 대한 객체를 생성하면서 바로 클래스 또는 인터페이스를 정의하는 클래스 
  • 정의하는 부분과 생성하는 부분이 하나로 묶어져 new수식이 있는 곳에서 바로 클래스를 정의하거나 인터페이스를 구현

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0727_Ex06~Ex08_enum : 열거형  (0) 2021.07.27
0727_Ex05_중첩 인터페이스  (0) 2021.07.27
0727_Ex01~Ex02_중첩 클래스  (0) 2021.07.27
0727_Ex111~116_throws : Checked, Unchecked ...  (0) 2021.07.27
0727_Ex110_tryResource  (0) 2021.07.27

+ Recent posts