본문 바로가기

JAVA

[ JAVA ] Casting (upCasting/downCasting) - 객체타입끼리의 형변환

 

 

예시를 들어보자

추상 클래스 Car class / 인터페이스 Fly / Car class를 상속받은 Sedan / Car class와 Fly interface를 상속받은 FlyingCar

 

 

 

 

추상 클래스  Car class

package Casting;

public abstract class Car {

	public abstract void carRun();
}

 

 

인터페이스 Fly

package Casting;

public interface Fly {

	public void fly();
}

 

 

Car class를 상속받은 Sedan

package Casting;

public class Sedan extends Car{

	@Override
	public void carRun() {
		
		System.out.println("세단이 달린다.");
	}
	
	public void comfortable() {
		
		System.out.println("Sedan만의 장점 - 편안하다");
	}

}

 

 

Car class와 Fly interface를 상속받은 FlyingCar

package Casting;

public class FlyingCar extends Car implements Fly {

	@Override
	public void carRun() {
		
		System.out.println("플라잉카가 달린다");
	}

	@Override
	public void fly() {
	
		System.out.println("플라잉카가 난다");
	}

}​

 

 

또 다른 class 생성 후 활용

Car car = new FlyCar(); // upCasting
car.carRun();
// Car class 내 method 만 사용가능 

Fly fly = new FlyCar(); // upCasting
fly.fly();
// Fly interface 내 method 만 사용가능

FlyCar flycar = new FlyCar();
flycar.carRun();
flycar.fly();
// FlyCar class 내 method 만 사용가능

Object obj = new FlyCar(); // upCasting
// Object class 내 method 만 사용가능​
  • java에서 만드는 모든 class는 자동으로 상속을 받고있는 class가 있다.
  • Object(java 내부에 들어있는 최상위 class)
  • Object class를 통해서 기본적으로 사용할 수 있는 메서드를 사용할 수 있도록 하기 위함
  • 최상위 calss로 등록됨으로 인해 모든 클래스(인터페이스 포함)는 Object Type으로 upCasting이 가능 
  • 클래스가 인스턴스화 될 때 다양한 형태를 가질 수 있는 것을 볼 수 있다.(다형성)