해당되는 인터페이스 타입의 참조 변수로 이를 구현한 클래스의 인스턴스를 참조할 수 있으며 인터페이스 타입으로의 형변환도 가능하다.
Fightable f = (Fightable) new Fighter();
// or
Fightable f = new Fighter();
따라서 인터페이스는 다음과 같이 메서드의 매개변수의 타입으로도 사용될 수 있으며 인터페이스 타입의 매개변수가 갖는 의미는 메서드 호출 시 해당 인터페이스를 구현한 클래스의 인스턴스를 매개변수로 제공해야 한다는 것이다.
void attack(Fightable f) { }
class Fighter extends Unit implements Fightable {
public void move(int x, int y) { }
public void attack(Fightable f) { }
}
또한 리턴타입으로 인터페이스를 지정하는 것도 가능하다.
Fightable method() {
return new Fighter();
}
리턴 타입이 인터페이스라는 것은 메서드가 해당 인터페이스를 구현한 클래스의 인스턴스를 반환한다는 것을 의미한다.
위의 코드에서는 method()의 리턴 타입이 Fightable인터페이스이기 때문에 메서드의 return 문에서 Fightable인터페이스를 구현한 Fighter클래스의 인스턴스의 주소를 반환한다.
'Java의 정석' 카테고리의 다른 글
디폴트 메서드와 static 메서드 (0) | 2022.04.25 |
---|---|
인터페이스의 장점 (0) | 2022.04.22 |
인터페이스의 상속, 구현 (0) | 2022.04.20 |
인터페이스(interface) (0) | 2022.04.19 |
추상클래스의 작성 (0) | 2022.04.18 |