자바

자바 형변환

멋진 개구리 2021. 1. 22. 14:44
반응형
public class Bus extends Car{
	public void ppangppang(){
    	System.out.println("빵빵."); 
    } 
}

클래스 형변환

부모타입으로 자식객체를 참조하게 되면 부모가 가지고 있는 메소드만 사용할 수 있다. 자식객체가 가지고 있는 메소드나 속성을 사용하고 싶다면 형변환 해야 한다.형변환

public class Car{
	public void run(){
		System.out.println("Car의 run메소드"); 
   } 
} 

상속관계란 is a 관계라고 말했었습니다. Bus는 Car다. 라는 관계가 성립되는 것이죠.
현실에서도 우리는 버스를 가리키면서 차다. 라고 말하곤 합니다.

  • 부모타입으로 자식객체를 참조할 수 있다.
    • 부모타입으로 자식객체를 참조하게 되면 부모가 가지고 있는 메소드만 사용할 수 있다.
public class BusExam{
	public static void main(String args[]){
    	Car car = new Bus();
        car.run();
        car.ppangppang(); // 컴파일 오류 발생 
    }
}
  • ppangppang()메소드를 호출하고 싶다면 Bus타입의 참조변수로 참조해야 한다.
public class BusExam{
	public static void main(String args[]){
    	Car car = new Bus();
        car.run(); 
        //car.ppangppang(); // 컴파일 오류 발생 
        
        Bus bus = (Bus)car; //부모타입을 자식타입으로 형변환 
        bus.run(); 
        bus.ppangppang(); 
    }
}
  • 객체들 끼리도 형변환이 가능하다. 단 상속관계에 있었을 때만 가능하다.
  • 부모타입으로 자식타입의 객체를 참조할 때는 묵시적으로 형변환이 일어난다.
  • 부모타입의 객체를 자식타입으로 참조하게 할때는 명시적으로 형변환 해주어 한다. 단 이렇게 형변환 할때에는 부모가 참조하는 인스턴스가 형변환 하려는 자식타입일 때만 가능하다.

출처 : programmers.co.kr/learn/courses/5/lessons/193

반응형