복습
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 : 강제 타입 변환을 하기 전에 변환이 가능한지 조사할 때 사용한다.
상속에서는 자식 클래스 타입인지, 인터페이스에서는 구현 클래스 타입인지를 확인할 때 사용한다.
인터페이스 상속 : 클래스는 다중 상속을 허용하지 않지만, 인터페이스는 다중 상속을 허용합니다.
즉 extends 키워드 뒤에 상위 인터페이스가 올 수 있습니다.
08-2 타입 변환과 다형성 - 3번)
DaoExmaple 클래스의 main() 메서드에서 dbWork() 메서드를 호출할 때 OracleDao와 MysqlDao 객체를 매개값으로 주고 호출했습니다.
dbWork()메서드는 두 객체를 모두 매개값으로 받기위해 DataAccessObject 타입의 매개 변수를 가지고 있습니다.
실행 결과를 보고 DataAccessObject 인터페이스와 OracleDao, MySqlDao구현 클래스를 각각 작성해보세요.