자바 다형성, 참조형(레퍼런스형) 형변환, 업캐스팅, 다운캐스팅
파일명 : Test1.java
package com.test;
class Parent {
void parentPrn() {
System.out.println("parentPrn()");
}
}
class Child extends Parent {
void childPrn() {
System.out.println("childPrn()");
}
}
public class Test1 {
public static void main(String[] args) {
// 기본자료형 형변환(호환가능한 자료형 : 숫자형)
double d = 3; // int -> double 자동 형변환
System.out.println(d);
int a = (int) 3.4; // double -> int 강제(명시적) 형변환
System.out.println(a); // 3
// 참조형(레퍼런스형) 형변환(호환가능관계는 상속관계)
Child c = new Child();
c.parentPrn();
c.childPrn();
Parent p;
p = c; // 부모타입(큰) = 자식타입(작은) (업캐스팅)자동형변환 -> 다형성
p.parentPrn();
// p.childPrn(); // 자식클래스의 함수를 호출할 수 없다
System.out.println("==============");
Parent p2 = new Child(); // 업캐스팅
// 부모타입(큰) = 자식타입(작은)
p2.parentPrn();
// p2.childPrn(); // 자식멤버 접근못함
Child c2;
c2 = (Child)p2; // 자식타입(작은) = 부모타입(큰)
// 형변환 연산자 사용. 강제 형변환. (다운캐스팅)
c2.parentPrn();
c2.childPrn();
} // main()의 끝
}