인터페이스 interface
abstract, final과 함께 대표적인 규제 중 하나
A 객체(클래스)가 특정한 인터페이스를 사용한다고 할 때, 그 객체는 반드시 인터페이스의 메소드들을 구현해야 하는 것이 인터페이스야
interface I {
public void z();
}
class A implement I {
public void z() {}
}
인터페이스 I는 z메소드를 마치 추상화처럼 시그니처만 정해놓음 → "클래스 A가 인터페이스 I를 구현한다"
→ 이때, 클래스 A는 z메소드 {}안에 로직을 만들어서 인터페이스I가 갖고있던 메소드를 구체적으로 구현하는 거야
인터페이스는 해당 클래스가 어떤 메소드를 갖고 있는지, 어떤 멤버를 갖고있는지 등 명세서 역할
이 명세서(인터페이스)에 적혀있는 대로 클래스의 멤버를 구체적으로 구현해야 컴파일이 되고, 서로 의사소통에 혼란을 주는 것도 줄일 수 있음
또한 A클래스를 만들고, A클래스를 바탕으로 B클래스를 만든다고 할 때
A클래스가 다 만들어진 다음에 B클래스를 만드는 것이 한달이 걸린다고 가정해볼게.
그런데 A클래스를 만드는 동시에 B클래스를 만드는 개발자가 A클래스의 인터페이스를 바탕으로 B클래스를
인터페이스 규칙
① 인터페이스에서 정의되는 멤버들의 접근 제어자 = public
인터페이스 안에 있는 메소드들은 그 인터페이스를 구현하는 클래스를 조작하는 외부장치
public interface Calculatable {
public void setOprands(int first, int second, int third);
public void sum();
public void avg();
}
class Calculator implements Calculatable {
int first, second, third;
public void setOprands(int first, int second, int third) {
this.first = first;
this.second = second;
this.third = third;
}
}
Calculator의 경우, setOprands,sum,avg메소드는 그 대상이 되는 Calculator 시스템을 제어하기 위해서 public 으로 된
조작장치
② 하나의 클래스가 두 개 이상 인터페이스 구현 가능 (상속은 단 하나의 부모 클래스만 상속받을 수 있음)
interfact I1 {
public void x();
}
interface I2 {
public void y()
}
class A implements I1,I2 {
public void x() {}
public void y() {}
}
③ 인터페이스끼리 상속도 가능
단, 상속받은 인터페이스를 구현하는 클래스는 자식 인터페이스의 메소드와 부모 인터페이스의 메소드까지 구현해야해
interface I3 {
public void x()
}
interface I4 extends I3{
public void y()
}
class B implements I4 {
public void x(){}
public void y(){}
}
'하다보면 되겠지 머.,. > 생활코딩_JAVA' 카테고리의 다른 글
예외1 - 문법 (0) | 2021.11.07 |
---|---|
다형성 (0) | 2021.11.04 |
추상 Abstract ↔ final (0) | 2021.11.03 |
접근제어자 (0) | 2021.11.03 |
API (0) | 2021.10.23 |