JAVA
[ JAVA ] Casting (upCasting/downCasting) - 객체타입끼리의 형변환
right_silver
2021. 5. 31. 17:11
예시를 들어보자
추상 클래스 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이 가능
- 클래스가 인스턴스화 될 때 다양한 형태를 가질 수 있는 것을 볼 수 있다.(다형성)