유형 캐스팅 및 다형성 종료
검토
- 자동 유형 변환
class A {}
class B extends A{}
main(){
// 상속관계의 자동 타입 변환
// 부모 클래스 타입 <- 자식클래스
A a = new A()
a = new B();
// 상속관계의 강제 타입 변환
// 부모 클래스 타입(B) <- (자식클래스 타입) 자식클래스(A)
B() = (B) a;
}
interface A{} // 인터페이스
calss B implements A{} // 구현 객체
main(){
// 인터페이스와 구현객체 관계의 자동 타입 변환
// 인터페이스 타입(A) <- 자식클래스 (B)
A a = new B(); <- 구현객체(B)
// 인터페이스와 구현객체 관계의 자동 타입 변환
// 구현객체 (B) <- 인터페이스 타입 (A)
B b = (B) a;
}
- instanceof: 강제 유형 변환을 수행하기 전에 변환이 가능한지 확인하는 데 사용됩니다.
상속이 하위 클래스 유형인지 인터페이스가 구현 클래스 유형인지 확인하는 데 사용됩니다. - 인터페이스 상속: 클래스는 다중 상속을 허용하지 않지만 인터페이스는 다중 상속을 허용합니다.
즉, 상위 인터페이스는 extend 키워드를 따를 수 있습니다.
마무리 문제
08-2 형주조와 다형성 – 3번)
DaoExmaple 클래스의 main() 메서드에서 dbWork() 메서드를 호출할 때 OracleDao와 MysqlDao 객체를 파라미터로 전달하여 호출했습니다.
dbWork() 메서드에는 두 개체를 매개 변수로 받는 DataAccessObject 유형의 매개 변수가 있습니다.
실행 결과를 보고 DataAccessObject 인터페이스, OracleDao 또는 MySqlDao 구현 클래스를 생성합니다.