인터페이스 : 호환성
자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있다.
하지만 인터페이스(interface)는 오로지 추상 메소드와 상수만을 포함할 수 있다.
pulbic static fianl로 정의된다.static 메서드와 default 메서드를 제외한 모든 메서드들은 pulblic abstarct으로 정의된다.interface 키워드로 선언된다.implements 키워드로 상속한다.extends 키워드와, implements 키워드를 함께 사용한다.class D extends C implements B{} //클래스D는 C클래스를 상속받고 B인터페이스도 상속받는다.
class D extends C implements A,B{} //인터페이스는 다중 상속이 가능하다.
익명 이너 클래스를 이용해 바로 객체를 생성할 수 있는 방법 2가지가 있다.interface A{
int a = 3;
void abc(); //미완성 abstract 메서드
}
class B implements A{
@Override
void abc(){
System.out.println("오버라이딩"); //상속받아 클래스를 정의
}
}
A a = new A(){
@Override
public void abc(){
System.out.println("오버라이딩"); // 익명 객체 생성
}
}
interface 인터페이스명{
public default 리턴타입 메서드명(){
// 메서드 내용
}
}
인터페이스명.정적메서드명으로 호출한다.interface A{
static void fun(){
// 메서드 내용
}
}
A a = new A();
a.fun(); //인터페이스명.정적메서드명으로 호출