반응형
인터페이스를 이용해 다형성이 가능하다.
인터페이스 타입의 참조변수로 이를 구현한 클래스의 인스턴스를 참조할 수 있으며, 인터페이스 타입으로의 형변환도 가능하다.
ex)
Fightable f = (fightable)new fighter();
또는
Fighteable f = new fighter();
이에 따라 인터페이스는 메서드의 매개변수의 타입으로 사용될 수 있다.
ex)
void attack (fightable f) {
//
}
위의 코드를 분석해보면
attack메서드 호출시 fightable 인터페이스를 구현한 fighter클래스의 인스턴스를 매개변수로 제공해야한다.
- 리턴타입이 인터페이스의 참조변수일 경우 메서드가 구현 클래스의 인스턴스를 반환한다는 의미이다.
- 인터페이스를 구현한 클래스의 자식클래스 또한 사용이 가능하다.
- 인터페이스의 다형성에서는 인터페이스타입의 매개변수를 선언하고 호출할 때 인수에 구현 객체를 대입하는 방식으로 사용한다.
- 매개변수의 타입이 인터페이스일 경우 어떠한 구현 객체도 인수로 사용가능하다.
- 그리고 구현 객체에 떄라 메소드의 실행결과가 달라진다.
강제타입변환
구현객체가 인터페이스 타입으로 자동타입변환시 인터페이스에 선언된 메소드만 사용이 가능하다.(제약이 따른다)
ex. 인터페이스에는 세 개의 메소드가 선언되어 있고, 클래스에는 다섯개의 메소드가 선언되어 있다면, 인터페이스로 호출 가능한 메소드는 세 개 뿐이다
이에 대한 대안방법으로 강제타입변환이 있다.
강제타입 변환 기능을 이용해 다시 구현 클래스 타입으로 변환 후 구현 클래스의 필드와 메소드를 사용할 수 있게 한다.
반응형
'JAVA' 카테고리의 다른 글
인터페이스 익명 구현 객체/ 다중 인터페이스/인터페이스 사용 (0) | 2020.09.08 |
---|---|
인터페이스 / 선언/ 구현 (0) | 2020.09.07 |
자바/ wrapper Class (0) | 2020.09.04 |
java/ to String 주소값 출력 값 출력으로 오버라이드 하기 (0) | 2020.09.03 |
Object Class /equals() /== (0) | 2020.09.02 |