본문 바로가기

콩's EDUCATION/콩's JAVA_RUN

명시적 형변환

명시적 형변환


 

class Parent{
 int su = 10;
 void pr(){
  System.out.println(su);
 }
 void mp(){
  System.out.println("Parent");  
 }
}
class Child1 extends Parent{
 int su = 20;
 void pr(){
  System.out.println(su);
 }
 void mc(){
  System.out.println("Child1");  
 }
}
public class CastingTest {
 public static void main(String[] args) {
  Parent p1 = new Parent();
  System.out.println(p1.su);
  p1.pr();
  p1.mp();
  // Child1 c1 = (Child1)p1;
  // p1 원래 Parent, child1으로 형변환 불가능하다.
  // 자동형변환 : Parent 타입 p1,p2 통일
    
  // p1.mc();
  // child1 객체 메모리 자체에 없다.
  
  Parent p2 = new Child1();
  System.out.println(p2.su); // 10
  p2.pr();
  p2.mp();
  Child1 c2 = (Child1)p2;
  // 명시적 형변환 ; 통일 사용중에 임시적 Child1 포함 변환
  System.out.println(c2.su); // 20
  System.out.println(((Child1)p2).su); // 20
  c2.mc();
  ((Child1)p2).mc(); // c2.mc()와 같다.
  
  //p2.mc(); Child1 객체 메모리 접근이 안된다.(오버라이딩 메소드만 가능)
  Child1 p3 = new Child1();  
  p3.pr();
  p3.mp();
  p3.mc();
 }
 
}

 

 

CastingTest.java