반응형
인터페이스
추상 메서드의 집합
구현된 것이 전혀 없는 설계도이다. 껍데기 (모든 멤버가 public)
interface 인터페이스이름 {
public static final 타입 상수이름 = 값 ;
public abstract 메서드이름 (매개변수목록);
}
상수에서의 public staitc final, 메서드의 public abstract 는 생략이 가능하다.
interface PlayingCard {
// 상수
public static final int SPADE = 4;
final int DIAMOND = 3;
static int HEART = 2;
int CLOVER = 1;
// ( public static final ) int CLOVER = 1;
// 항상 예외없이 생략 가능
// 추상 메서드
public abstract String getCardMember();
String getCardKing();
// (public abstract) String getCardKing();
// 생략 가능
}
인터페이스의 조상은 인터페이스만 가능하다. (Object 가 최고 조상이 아니다)
다중 상속이 가능하다. (조상이 여러개이다.) 추상 메서드는 충돌해도 문제가 없다. 선언부는 같고 구현부는 없기 때문이다.
인터페이스의 구현
인터페이스에 정의된 추상 메서드를 완성(구현)하는 것이다.
class 클래스이름 implements 인터페이스이름 {
// 인터페이스에 정의된 추상메서드를 전부 구현
}
* 추상 클래스는 extends 로 추상 클래스를 완성(구현)
* 인터페이스는 implements 를 통해 인터페이스를 완성(구현)
추상 클래스 완성과 동일하다. extends 대신 implements 를 사용하는 것이 다르다.
인터페이스를 implements 받은 클래스 중 일부만 구현하는 경우, 클래스 앞에 abstract 를 붙여야 한다.
추상클래스와 인터페이스의 차이
인터페이스는 일반 클래스인데 추상메서드를 가지고 있는 것. 추상 메서드 외에는 가지고 있지 않은 것.
추상클래스는 생성자, iv, 추상 메서드도 가지고 있다. 클래스인데 미완성 된 것.
참고자료
자바의 정석 3rd edition
자바의 정석 - 기초편 인터페이스 강의
https://www.youtube.com/watch?v=eS2EXUSRolk&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=89
반응형