중첩인터페이스

오늘·2021년 3월 18일
0

Java

목록 보기
21/42

중첩 인터페이스

클래스의 멤버로 선언된 인터페이스를 말한다. 특히 UI 프로그래밍에서 이벤트를 처리할 목적으로 많이 활용된다

class ButtonClass{
	// 2. 필드 값으로
	// 인터페이스 변수
	OnClick listener;
	
	// 3. 인터페이스 변수를 받아 값을 필드 값으로 올린다
	void setOnClick(OnClick listener) {
		this.listener = listener;
	}
	
	// 4. 구현 객체의 onClick 메소드를 호출
	void touch() {
		listener.onClick();
		
	}
	// 1. 인터페이스 선언
	interface OnClick{
		abstract void onClick();
	}
}

사용모습

  1. 중첩 인터페이스의 모습
class C{
	// 필드 선언 (new가 따로 필요 없다)
	I i;
	// 메소드 선언
	// 매개변수로 인터페이스 타입을 사용가능
	void cM(I i) {
		this.i = i;
	}
	// 리턴타입으로 인터페이스를 넣는 것도 가능
	I cM1(I i) {
		this.i = i;
		return i;
	}
	// 일반 클래스에서 인터페이스 메소드를 호출하는 것도 가능
	void call() {
		i.iM();
	}
	// 인터페이스 작성
	interface I{
		void iM();
	}
}
  1. 중첩 인터페이스를 구현하는 클래스
//class Run implements I {	}	// 불가
class Run1 implements C.I {	// C에 속해있는 interface와 연결하겠다
	@Override
	public void iM() {
		System.out.println("전화 걸기");
	}
}

class Run2 implements C.I {
	@Override
	public void iM() {
		System.out.println("카톡 하기");
	}
}

class Run3 implements C.I {
	@Override
	public void iM() {
		System.out.println("문자 하기");
	}
}
  1. 호출해 확인
public class Main {
	public static void main(String[] args) {
		// 다형성으로 처리되는 모습을 확인할 수 있다
		C c1 = new C();
		c1.cM(new Run1());
		c1.call();
		c1.cM(new Run2());
		c1.call();
		c1.cM(new Run3());
		c1.call();
	}
}

실행모습


타입 크기를 이용해 다형성

(ex. Animal a = new Cat();)
(큰 타입 - 작은 타입)
인터페이스 - 구현 클래스
상위 클래스 - 하위 클래스

상위 클래스
: 공통필드
: 공통 메소드

하위 클래스
: 상위클래스에 작성된것 사용
: 세부적인 코드 작성
-> 예를 들어)
부모 클래스에서 메소드 명칭만 만들고, 내용은 하위에서 세부적으로 작성
부모 클래스에서 추상메소드를 만들고, 하위에서 오버라이딩해 사용


0개의 댓글