1. 형변환방식
1) Animal ani = new Cat();
→이렇게 객체를 변환하는 방식을 upcasting이라 한다.
→부모 =(자동형변환)자식
→ ani.eat(); // 자식이 부모타입으로 형변환 되었더라도 오버라이딩 (overring)된 경우 자식객체Cat의 eat();이 호출된다.
→"고양이 처럼 먹다." 출력
→ani.night(); 자식객체가 부모타입으로 형변환 됐으므로 부모타입이 가지고 있지 않은 night()메서드는 사용불가
→강제적 형변환 필요
2) Cat cat =(Cat)ani;
→부모타입에서 자식타입으로 객체를 변환하는 방식을 downcasting이라 한다.
→ cat.night(); //사용가능
→밤에 눈이 빛난다.
2. 나보다 부모가 먼저인 이유
Animal d = new Dog() 코드 작성시
public Dog() {
super(); //new Animal();
}
자식객체인 Dog의 생성자가 호출되고, Dog 생성자의 메서드 안에 있는 super()메서드가 호출된다.
그러면 Animal생성자가 호출되면서 부모인 Animal 객체가 만들어진다. 그 후에 자식인 Dog객체가 만들어진다.
※부모의 객체를 먼저 생성한 후 자식의 객체를 생성한다.
'자바 > Java TPC(생각하고, 표현하고, 코딩하고)' 카테고리의 다른 글
추상클래스(일부 다형성 보장) (0) | 2022.10.27 |
---|---|
다형성 (0) | 2022.10.26 |
오버라이딩(Overrring) (0) | 2022.10.26 |
클래스의 정의 (0) | 2022.10.26 |
정보은닉에서의 Getter Setter (0) | 2022.10.26 |