클래스의 멤버로 선언된 인터페이스를 말한다. 특히 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();
}
}
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();
}
}
//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("문자 하기");
}
}
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();)
(큰 타입 - 작은 타입)
인터페이스 - 구현 클래스
상위 클래스 - 하위 클래스
상위 클래스
: 공통필드
: 공통 메소드
하위 클래스
: 상위클래스에 작성된것 사용
: 세부적인 코드 작성
-> 예를 들어)
부모 클래스에서 메소드 명칭만 만들고, 내용은 하위에서 세부적으로 작성
부모 클래스에서 추상메소드를 만들고, 하위에서 오버라이딩해 사용