[Java] 타입 변환
타입 변환
자동 타입 변환 (부모 - 자식)
자동 타입 변환은 의미 그대로 자동적으로 타입 변환이 일어나는 것을 말한다.
부모타입 변수 = 자식타입객체;
자식 클래스에서 오버라이딩된 메소드가 있다면 부모 메소드 대신 오버라이딩된 메소드가 호출된다 → 다형성과 관련!
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(); //(가능)
}
}
- 출처: 이것이 자바다
댓글남기기