다형성 특성에 의해 자식 객체에서 상속받은 부모의 클래스 또는 인터페이스의 참조변수 타입으로 자식 인스턴스를 저장할 수 있다.
이후 메소드 호출은 각각 참조변수 타입에 존재하는 메소드호출만 가능하다.
메서드의 인터페이스 타입의 매개변수가 갖는 의미는 메서드 호출시 해당 인터페이스를 구현한 클래스의 인스턴스를 매개변수로 제공해야 한다는 의미이다.
위의 경우 attack메서드에서 Fightable 인터페이스 타입이 매개변수로 지정되어 있다. 그렇다면 해당 메서드를 호출할때는 Fighter 인스턴스 객체를 매개변수로 넣어주어야한다.
메서드의 리턴타입으로 인터페이스 타입을 지정하는 것은 메서드가 해당 인터페이스를 구현한 클래스의 인스턴스를 반환한다는 의미이다.
Figtable getFightable 메소드의 경우 return 문에서 Fightable을 구현한 Fighter 인스턴스 객체가 반환된다.
A클래스 코드의 변경없이도 B또는 C 클래스 즉 method 메소드의 구현부를 수정함으로써 코드변경을 최소화 하였다.
Interface를 사용하여 위와같이 코드변경을 최소화 할수 있다.
'Programming > JAVA' 카테고리의 다른 글
StringBuffer클래스와 StringBuilder클래스 (0) | 2021.07.26 |
---|---|
String 클래스 (0) | 2021.07.26 |
Object클래스 메서드 (0) | 2021.07.18 |
예외처리 Exception handling (0) | 2021.07.17 |
JAVA 접근 제어자 (0) | 2021.07.15 |