interface 인터페이스명 { }implements 인터페이스명 { } 📝예시
interface 인터페이스이름 {
public static final 타입 상수이름 = 값;
public abstract 메서드이름(매개변수목록); //public abstract 키워드는 생략이 가능하다
}
//인터페이스의 다중 상속 예시
class implements 인터페이스1, 인터페이스2{ }
👍인터페이스 주의사항
- 인터페이스의 모든 멤버는 public, abstract 이기 때문에 public, abstract 키워드는 생략이 가능하다.
- 인터페이스 상속받으면 정의된 추상메서드를 모두 구현해야 한다.
- 일부만 구현하는 경우, 클래스 앞에 abstract를 붙여줘야한다.(상속받은 추상메서드를 구현하지 않았기때문에)
연결, 대화, 소통을 돕는 중간 역할을 한다.📝예시 - 직접적인 관계의 두 클래스(A-B)
class A{
public void methodA(B b){
b.methodB();
}
}
class B {
public void methodB(){
System.ou.println("methodB()");
}
}
class InterfaceTest {
public static void main(String args[]){
A a = new A();
a.methodA(new B());
}
}
👍
위와 같은 경우 A-B에 의존하고 있다고 볼 수 있다. (class A 에서 B를 사용, B클래스의 메서드를 호출)
📝예시 - 간접적인 관계의 두 클래스(A-I-B)
class A{
public void methodA(I i){
b.methodB();
}
}
interface I { void methodB(); }
class B implements I {
public void methodB(){
System.ou.println("methodB()");
}
}
class C implements I {
public void methodB(){
System.ou.println("methodB() in C");
}
}
👍
class B에 인터페이스를 상속해줘서 A가 B가 아닌 I를 사용하도록 하여,
B를 다른 클래스로 변경해도 A에는 변경이 없게된다.