(규제적 측면)
객체가 특정한 인터페이스를 사용한다면
객체는 반드시 인터페이스의 메소드들을 구현
interface I{
public coid z();
}
중괄호가 없는 클래스!
class A implements I{
public void z(){}
}
구현! 인터페이스의 클래스를 구체적으로 구현해야 함!
클래스 A는 인터페이스 I를 구현한다.
서로 약속, 합의
어떤 클래스가 어떠한 메서드와 멤버를 가지고 있는가에 대한 명세서!
구현하고 있는 클래스들은 명세서에 정해있는 대로 구체적으로 구현해야만 컴파일 됨!
대상 시스템을 제어하는 장치들 (접근 제어자는 반드시 public 이어야 함!)
하나의 클래스는 여러개의 인터페이스를 구현할 수 있다.
class A implenents I1, I2{
public void x(){}
public void z(){}
}
abstract클래스를 하위클래스가 상속받아서 사용한다 외에는 일반적인 클래스와 동일! - 오버라이드할 것으로 기대되는 비어있는 메소드가 있음, 실제 구현 메소드가 존재할 수도 있음.
interface: 구체적인 로직을 포함하는 메소드를 가질 수 없다!