IT/Java

자바 다형성, 참조형(레퍼런스형) 형변환, 업캐스팅, 다운캐스팅

노마드오브 2018. 7. 18. 00:00

파일명 : 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()의 끝


}