java - 익명 내부 클래스

imjingu·2023년 8월 30일
0

개발공부

목록 보기
434/481

익명 내부 클래스
이름을 사용하지 않는 클래스
1) 메서드를 호출할 때 생성되거나
2) 참조 변수에 대입할 때 new 예약어를 사용하여 생성

package chapter20230830;

class Outter {
	Runnable getRunnable(int i) { // 메소드 생성
		int num = 100;
		
		return new Runnable() { // 1) 메서드를 호출할 때 생성
			// 익명 내부 클래스. 리턴 용도로만 사용할 것이라서 익명 내부함수 사용. 클래스를 바로 생성
			@Override
			public void run() {
				// num = 200; // 에러남
				// i = 10;    // 에러남
				System.out.println(i);
				System.out.println(num);
			}
		}; // 클래스 끝에 ; 사용
	}
	
	Runnable runner = new Runnable() { // 2) 참조 변수에 대입할 때 new 예약어를 사용하여 생성
		// 익명 내부 클래스. 객체 생성시 run() 메소드만 오버라이딩 해서 사용
		@Override
		public void run() {
			System.out.println("Runnable 이 구현된 익명 클래스 변수");
		}
	}; // 클래스 끝에 ; 사용
}
public class test03 {

	public static void main(String[] args) {
		Outter out = new Outter();
		
		Runnable runnerble = out.getRunnable(10);
		runnerble.run();
		
		out.runner.run(); // Runnable 이 구현된 익명클래스 변수. 객체.내부객체.메서드() 형식으로 접근.

	}

}

0개의 댓글