package ch07.sec07.exam02;
public class Parent {
// 메소드 선언
public void method01() {
System.out.println("Parent-method1");
}
// 메소드 선언
public void method02() {
System.out.println("Parent-method2");
}
}
package ch07.sec07.exam02;
public class Child extends Parent {
// 메소드 오버라이딩
@Override
public void method02() {
System.out.println("Child-method2");
}
// 메소드 선언
public void method03() {
System.out.println("Child-method3");
}
}
package ch07.sec07.exam02;
public class ChildExample {
public static void main(String[] args) {
// 자식 객체 생성
Child child = new Child();
// 자동 타입 변환
Parent parent = child;
parent.method01();
parent.method02();
// parent.method03(); // 호출 불가
}
}
method03은 자식 클래스의 메소드라 호출할 수 없다.
강제 타입 변환(Casting)
부모 타입을 자식으로 변환하는 것을 강제 타입 변환이라 한다. 자식 타입이 부모 타입으로 자동 타입 변환되고 난 후 다시 자식 타입으로 타입 변환을 할 때만 강제 타입 변환이 가능하지 모든 부모 타입이 자식 타입으로 강제 타입 변환은 될 수 없다.
자식타입 변수 = (자식타입) 부모타입객체;
Parent parent = new Child(); // 자동 타입 변환
Child child = (Child) parent; // 강제 타입 변환
주로 자동 타입 변환 후 자식 타입에 선언된 필드와 메소드를 꼭 사용해야할 때 강제 타입 변환을 해서 다시 자식 타입으로 변환 후 사용한다.