Java

Java 익명 내부 class

승모근뭉치 2023. 1. 28. 23:02

프로젝트 내 src 내 javabasic 패키지 내 Ex11InnerClass.java

package javabasic;

interface WindowEvent {
	abstract public void windowClose();

	abstract public void windowIcon();

	abstract public void windowOpen();
}

public class Ex11InnerClass {

	// WindowEvent 를 익명 내부 클래스 형태로 구현하시오
	// 변수명은 win

	// WindowEvent win=new WindowEvent() {
	//
	// @Override
	// public void windowOpen() {
	// // TODO Auto-generated method stub
	// System.out.println("윈도우 창을엽니다");
	// }
	//
	// @Override
	// public void windowIcon() {
	// // TODO Auto-generated method stub
	// System.out.println("윈도우 아이콘입니다");
	// }
	//
	// @Override
	// public void windowClose() {
	// // TODO Auto-generated method stub
	// System.out.println("윈도우 창을닫습니다");
	// }
	// };

	WindowEvent win = new WindowEvent() {

		@Override
		public void windowOpen() {
			// TODO Auto-generated method stub
			System.out.println("윈도우 오픈");
		}

		@Override
		public void windowIcon() {
			// TODO Auto-generated method stub
			System.out.println("윈도우 아이콘화");
		}

		@Override
		public void windowClose() {
			// TODO Auto-generated method stub
			System.out.println("윈도우 닫기");
		}
	};

	// WindowEvent 를 구현하는 내부클래스 SubWindow 를 구현하시오

	// class SubWindow implements WindowEvent
	// {
	// @Override
	// public void windowOpen() {
	// // TODO Auto-generated method stub
	// System.out.println("서브가 윈도우를엽니다");
	// }
	//
	// @Override
	// public void windowIcon() {
	// // TODO Auto-generated method stub
	// System.out.println("서브의 윈도우아이콘입니다");
	// }
	//
	// @Override
	// public void windowClose() {
	// // TODO Auto-generated method stub
	// System.out.println("서브가 윈도우를닫습니다");
	// }
	// }

	class SubWindow implements WindowEvent {
		@Override
		public void windowOpen() {
			// TODO Auto-generated method stub
			System.out.println("윈도우 오픈");
		}

		@Override
		public void windowIcon() {
			// TODO Auto-generated method stub
			System.out.println("윈도우 아이콘화");
		}

		@Override
		public void windowClose() {
			// TODO Auto-generated method stub
			System.out.println("윈도우 닫기");
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 익명 내부클래스 선언후 메소드 호출
		// Ex11InnerClass ex=new Ex11InnerClass();
		// ex.win.windowOpen();
		// ex.win.windowIcon();
		// ex.win.windowClose();

		Ex11InnerClass ex = new Ex11InnerClass();
		ex.win.windowOpen();
		ex.win.windowIcon();
		ex.win.windowClose();

		// SubWindow 내부클래스 선언후 메소드 호출
		// Ex11InnerClass.SubWindow sub1=ex.new SubWindow();
		// sub1.windowOpen();
		// sub1.windowIcon();
		// sub1.windowClose();

		Ex11InnerClass.SubWindow sub = ex.new SubWindow();
		sub.windowClose();
		sub.windowIcon();
		sub.windowOpen();
	}

}
윈도우 오픈
윈도우 아이콘화
윈도우 닫기
윈도우 닫기
윈도우 아이콘화
윈도우 오픈