✅ 인터페이스 ✅ interface ✅ implements
다른 클래스를 작성하는데 도움을 주는 목적으로 사용된다.
미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는데 사용된다.
인터페이스는 인터페이스로부터만 상속받을 수 있다.
클래스와 달리 다중상속이 가능하다.
class 클래스이름 implements 인터페이스이름{ // 인터페이스에 정의된 추상메서드를 구현해야 한다. }
class Fighter implements Fightable{
public void move(){(구현)} // public 붙여야 함
public void attract(){(구현)} // public 붙여야 함
}
interface Fightable{
void move(int x, int y); // public abstract 생략
void attract(Unit u); // public abstract 생략
}
class Fighter extends Unit implements Fightable{
public void move(int x, int y){(구현)};
public void attract(Fightable f){(구현)};
}
Fighter f = new Fighter();
Fightable f = new Fighter(); // 가능
void attack(Fightable f){
}
Fightable 인터페이스를 구현한 클래스의 인스턴스를 매개변수로 받았다는 뜻이다.
- 개발시간을 단축할 수 있다.
-> 인터페이스를 이용하면 메서드의 내용에 관계 없이 선언부만 알면 되기 때문에 인터페이스를 구현하는 클래스가 작성될 때까지 기다리지 않고 양쪽에서 동시에 개발을 진행할 수 있다.- 표준화가 가능하다.
-> 인터페이스로 기본 틀을 작성하면 일관되고 정형화된 프로그램 개발이 가능하다.- 서로 관계없는 클래스들에게 관계를 맺어줄 수 있다.
-> 아무 관계없는 클래스들에게 하나의 인터페이스를 공통적으로 구현하게 하여 관계를 맺어줄 수 있고, 다형성을 이용할 수 있는 장점이 생긴다.- 독립적인 프로그래밍이 가능하다.
-> 인터페이스로 클래스의 선언과 구현을 분리시켜, 클래스들의 직접적인 관계를 간접적인 관계로 변경할 수 있다. 따라서 클래스의 변경이 관련된 다른 클래스에 영향을 미치지 않는다.