반응형
인터페이스의 다형성
인터페이스는 동일한 인터페이스로 구현 객체를 교체해서 다양한 프로그램 실행 결과를 얻을 수 있다.
자동 타입 변환
구현 객체와 그 구현 객체의 자식 객체는 인터페이스 타입으로 알아서 자동 타입 변환이 된다.
Interface_Name var = new Test(); // Test의 자식 객체도 구현 객체처럼 사용할 수 있음.
강제 타입 변환
보통 구현 객체가 인터페이스 타입으로 자동 변환 되면 인터페이스에 있는 메소드만 사용이 가능한데
구현 객체에서만 선언된 필드나 메소드를 사용할 필요가 있을 경우엔 강제 타입 변환이 필요하다.
interface Vehicle{
void run(){}
}
class Bus implements Vehicle{
void run(){}
void only(){}
}
// main part
Vehicle vehicle = new Bus();
//강제 타입 변환
Bus bus = (Bus) vehicle;
bus.only();
마찬가지로 강제 타입 변환 했을 때 정확한 구현 객체가 변환되어 있는지 알 수 없기 때문에 ClassCastException 오류가 발생할 수 있다.
따라서 instanceof 연산자를 사용하여 타입을 변환해야한다.
//강제 타입 변환
if (vehicle instanceof Bus){
Bus bus = (Bus) vehicle;
bus.only();
}
인터페이스 상속
인터페이스의 경우엔 다중 상속이 가능한데 선언부는 다음과 같다.
public interface 하위인터페이스 extends 상위1, 상위2 {}
하위인터페이스의 구현 객체의 경우엔 상위와 하위 인터페이스 내에 있는 메소드를 모두 재정의 해야하고 하위인터페이스 스 타입뿐만 아니라 상위 인터페이스의 타입도 자동 타입 변환이 가능하다.
하위인터페이스 var = new 구현객체();
상위1 var1 = new 구현객체();
상위2 var2 = new 구현객체();
반응형
'Language > Java' 카테고리의 다른 글
Java 익명 객체 (0) | 2022.06.12 |
---|---|
Java 중첩 클래스와 중첩 인터페이스 (0) | 2022.06.11 |
Java 인터페이스 (0) | 2022.05.30 |
Java 추상클래스 (0) | 2022.05.30 |
Java 타입 변환과 다형성 (0) | 2022.05.27 |