[Java] 타입 변환

1 분 소요

타입 변환


자동 타입 변환 (부모 - 자식)

자동 타입 변환은 의미 그대로 자동적으로 타입 변환이 일어나는 것을 말한다.
부모타입 변수 = 자식타입객체;
자식 클래스에서 오버라이딩된 메소드가 있다면 부모 메소드 대신 오버라이딩된 메소드가 호출된다 → 다형성과 관련!

package ch07.sec07.exam02;

public class Parent {
    //메소드 선언
    public void method1(){
        System.out.println("Parent-method1()");
    }

    //메소드 선언
    public void method2(){
        System.out.println("Parent-method2()");
    }
}

package ch07.sec07.exam02;

public class Child extends Parent{
    //메소드 오버라이딩
    @Override
    public void method2(){
        System.out.println("Child-method2()");
    }

    //메소드 선언
    public void method3(){
        System.out.println("Child-method3()");
    }
}

package ch07.sec07.exam02;

public class ChildExample {
    public static void main(String[] args) {
        //자식 객체 생성
        Child child = new Child();

        //자동 타입 변환
        Parent parent = child;

        //메소드 호출
        parent.method1();
        parent.method2();
        //parent.method3(); (호출 불가능)
    }
}
/* Parent-method1()
   Child-method2() --> 자식 메소드가 호출됨 */

자동 타입 변환 (부모 - 자식)

package ch07.sec07.exam03;

public class Parent {
    //필드 선언
    public String field1;

    //메소드 선언
    public void method1(){
        System.out.println("Parent-method1()");
    }

    //메소드 선언
    public void method2(){
        System.out.println("Parent-method2()");
    }
}

package ch07.sec07.exam03;

public class Child extends Parent{
    //필드 선언
    public String field2;

    //메소드 선언
    public void method3(){
        System.out.println("Child-method3()");
    }
}
package ch07.sec07.exam03;

public class ChildExample {
    public static void main(String[] args) {
        //객체 생성 및 자동 타입 변환
        Parent parent = new Child();

        //Parent 타입으로 필드와 메소드 사용
        parent.field1 = "data1";
        parent.method1();
        parent.method2();

        /*
        * parent.field2 = "data2";  //(불가능)
        * parent.method3();         //(불가능)
        * */

        //강제 타입 변환
        Child child = (Child)parent;

        //Child 타입으로 필드와 메소드 사용
        child.field2 = "data2"; //(가능)
        child.method3();        //(가능)
    }
}

  • 출처: 이것이 자바다

카테고리:

업데이트:

댓글남기기