package com.java1.day16;
public class PolymorphismEx08 {
public static void main(String[] args) {
Parent6 p = new Child6(); // 다형적 표현
p.aaa(); // A6 클래스의 aaa() 메서드 호출
p.bbb(); // B6 클래스의 bbb() 메서드 호출
// p.ccc(); // 컴파일 에러 발생!
//자손 타입 -> 조상타입 : 형변환 생략가능
//자손타입 <- 조상타입 : 형변환 생략 불가
((Child6)p).ccc(); //조상 -> 자손 타입
}
}
class Parent6 {
public void aaa() {
System.out.println("Parent aaa");
}
public void bbb() {
System.out.println("Parent bbb");
}
}
class Child6 extends Parent6{
@Override
public void bbb() {
System.out.println("Child bbb1");
}
public void ccc() {
System.out.println("Child ccc");
}
}
/* 다형성이 이해가 안간다면 두가지만 기억하자!
* 필드는 무조건 상위 클래스의 필드만 사용할수 있다.
* 메서드도 상위 클래스의 메서드만 사용할수 있는데 오버라이딩이 되었다면 하위 클래스의 메서드가 실행된다.
*/
Parent aaa
Child bbb1
Child ccc