안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
부모 타입을 자식 타입으로 변환하는 것.
모든 부모 타입을 자식 클래스의 타입으로 강제 변환할 수 있는 것은 아닙니다.
자식 타입이 부모 타입으로 자동 변환한 후 다시 자식 타입으로 변환할 때
강제 타입 변환을 사용할 수 있습니다.
자식클래스 변수 = (자식클래스)부모클래스타입;
자식 타입이 부모타입으로 변환된 상태
자식 타입이 부모 타입으로 자동 변환하면, 부모 타입에 선언된 필드와 메서드만
사용가능하다는 제약 사항이 따릅니다.
자식 타입에 선언된 필드와 메서드를 꼭 사용해야 한다면
강제 타입 변환을 해서 다시 자식 타입으로 변환한 다음 자식 타입의 필드와 메서드를 사용하면 됩니다.
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(); //(가능)
}
}
'자바' 카테고리의 다른 글
JAVA 자바 추상 클래스의 개념과 용도 / 추상 클래스 선언 (0) | 2017.03.12 |
---|---|
JAVA 자바 객체 타입 확인 ( instanceof) (0) | 2017.03.12 |
JAVA 자바 매개 변수의 다형성 (0) | 2017.03.12 |
JAVA 자바 하나의 배열로 객체 관리 (0) | 2017.03.12 |
JAVA 자바 타입 변환과 다형성 필드의 다형성 (0) | 2017.03.12 |