자동 타입 변환 = 업캐스팅
Parent p = new Child();
자식타입-> 부모타입으로 변환시키는 것이다.
바로위의 부모가 아니더라도 상속계층 상위에 있다면 타입 변환이 가능하다.
자동타입 변환 이후 부모 필드와 메소드만 접근가능하다.
오버라이딩 된 부모클래스는 자식클래스 메소드가 대신 호출
public class Driver{
void drive(Vehicle vehicle){ //맨아랫줄에서 매개변수 자녀클래스 자동타입변환
vehicle.run();
}
}
////////////////////////////////////////////////////
public class Bus extends Vehicle{
@Override
public void run(){
System.out.println("버스가 달립니다");
}
}
////////////////////////////////////////////////////
public class DriverExample {
public static void main(String[] args){
Driver driver = new Driver();
Bus bus new Bus();
driver.drive(bus); //자동 타입 변환 : Vehicle vehicle = bus;
}
}
강제 타입 변환 = 다운캐스팅
Parent p = new Child();
Child c = (Child)p;
자동 타입 변환으로 자식타입 -> 부모타입 변환 후
다시 부모타입 -> 자식타입으로 변환 할 때 사용한다.
부모 필드,메소드가 아닌 자식 타입에 선언된 필드, 메소드를 사용할 경우 사용한다.
(부모타입으로 변경하면 자식 타입에 따로 생성된 필드나 메소드를 사용할 수 없기 때문)
객체 타입 확인 (instanceof)
boolean result = p instanceof Child
자식타입 -> 부모타입 변환했을 때
부모변수 참조 객체 타입 == 자식객체 확인하기 위해 사용한다.
'BackEnd > Java' 카테고리의 다른 글
[Eclipse] Data Source Explorer 안보이는 문제 해결 방법 (0) | 2022.02.21 |
---|---|
[Java] 서로다른 클래스의 객체생성과 메소드 호출 (0) | 2022.01.08 |
[Java] 상속 오버라이드(@Override) (0) | 2021.12.15 |
[Java] Overloading (생성자, 메소드 오버로딩) (0) | 2021.12.15 |
[Java] Escape Sequences 사용하기 (0) | 2021.12.06 |