
예시를 들어보자

추상 클래스 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이 가능
- 클래스가 인스턴스화 될 때 다양한 형태를 가질 수 있는 것을 볼 수 있다.(다형성)
'JAVA' 카테고리의 다른 글
[ JAVA ] 정적멤버와 static - 고정된 멤버와 메소드 (0) | 2021.06.02 |
---|---|
[ JAVA ] 다형성(polymorphism) - 서로 다른 타입의 값으로 다양한 결과를 도출하는 성질 (0) | 2021.06.01 |
[ JAVA ] 인터페이스(interface) - 특정 행위에 대한 추상화 (0) | 2021.05.28 |
[ JAVA ] 상속 - 중복코드 줄이기 (0) | 2021.05.26 |
[ JAVA ] 접근 제한자 - 어디까지 접근이 가능한가 (0) | 2021.05.25 |