자바

JAVA 자바 강제 타입 변환 ( Casting ) / 자바 강제 타입 변환

알통몬_ 2017. 3. 12. 19:40
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

강제 타입 변환 ( Casting )

 부모 타입을 자식 타입으로 변환하는 것. 

모든 부모 타입을 자식 클래스의 타입으로 강제 변환할 수 있는 것은 아닙니다. 

자식 타입이 부모 타입으로 자동 변환한 후 다시 자식 타입으로 변환할 때 

강제 타입 변환을 사용할 수 있습니다.

자식클래스 변수 = (자식클래스)부모클래스타입;

                    자식  타입이 부모타입으로 변환된 상태


자식 타입이 부모 타입으로 자동 변환하면, 부모 타입에 선언된 필드와 메서드만

 사용가능하다는 제약 사항이 따릅니다.

 자식 타입에 선언된 필드와 메서드를 꼭 사용해야 한다면 

강제 타입 변환을 해서 다시 자식 타입으로 변환한 다음 자식 타입의 필드와 메서드를 사용하면 됩니다.



field2필드와 method3()메서드는 Child 타입에만 선언되어 있으므로

 Parent 타입으로 자동 타입 변환하면 사용할 수 없습니다.

 field2필드와 method3()메서드를 사용하고 싶다면 다시 Child 타입으로 강제 타입 변환을 해야합니다.


예제)


부모 클래스

public class Parent {

public String field1;

public void method1() {

System.out.println("Parent-method1()");

}

public void method2() {

System.out.println("Parent-method2()");

}

 

}

자식 클래스

public class Child extends Parent {

public String field2;

public void method3() {

System.out.println("Child-method3()");

}

 

}


강제타입변환(캐스팅)

public class ChildExample {

public static void main(String[] args) {

Parent parent = new Child();

parent.field1 = "data1";

parent.method1();

parent.method2();

/*

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

parent.method3();         //(불가능)

*/

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

child.field2 = "yyy";  //(가능)

child.method3();     //(가능)

}

 

}

반응형