[Java] 클래스 형변환

Hee·2024년 4월 1일

Java 복습

목록 보기
27/46
post-thumbnail

클래스 형변환

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


부모클래스와 자식클래스 정의

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

public class Bus extends Car{
	public void ppangppang(){
    	System.out.println("빵빵");
    }
}

상속관계란 'is a' 관계이다. "Bus는 Car이다"라는 관계가 성립된다.



부모타입으로 자식 객체 참조(묵시적 형변환)

  • 부모타입으로 자식객체를 참조할 수 있다.
  • 부모타입으로 자식객체를 참조하게 되면, 부모가 가지고 있는 메소드만 사용이 가능하다.
public class BusExam{
	public static void main(String[] args){
    	Car car = new Bus();
        car.run();
        car.ppangppang();		// 컴파일 오류 발생
    }
}


클래스 형변환 - 자식 클래스의 메소드 호출

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();		// 호출 가능
    }
}

자식 클래스의 메소드를 호출하고 싶다면, 자식 타입의 참조변수로 참조해야 한다.

  • 객체들끼리도 형변환이 가능하다. 단, 상속관계에 있었을 때만 가능하다.
  • 부모타입으로 자식타입의 객체를 참조할 때는 묵시적으로 형변환이 일어난다.
  • 부모타입의 객체를 자식타입으로 참조하게 할 때는 명시적으로 형변환 해주어야 한다. 단, 위와 같이 형변환 할 때에는 부모가 참조하는 인스턴스가 형변환하려는 자식타입일 때만 가능하다.

0개의 댓글