추상클래스와 인터페이스에서 공통점과 차이점을 찾기 시작하면 햇갈리기만 하다
각 기술의 특징과 목적을 파악하여 알맞게 활용하자
결론: 자바의 인터페이스는 기능의 호환성을 높이기 위한 것이다.
즉 자바에서 인터페이스는 기능을 구현하는데 필요한 커서와 휠과 같은 기본적인 명세다
List<Integer> linkLs = new LinkedList<>();
List<Integer> arrLs = new ArrayList<>();
결론: 자바의 추상클래스는 상속관계에서 부모클래스에 필요없는 구현을 줄이기 위함이다.
abstract class Vehicle{
boolean key;
int energy;
public boolean start(){
this.key = true;
return true;
}
public abstract void addFuel(int energy);
}
class Car extends Vehicle{
@Override
public void addFuel(int energy){
this.energy = 10*energy;
}
}
class Bike extends Vehicle{
@Override
public void addFuel(int energy){
this.energy = 15*energy;
}
@Override
public boolean start(){
this.key = false;
return false;
}
}
Vehicle v = new car();
v.start();
// v.key는 true
Vehicle v = new Bike();
// 동적바인딩으로 Bike에 오버라이드된 start를 호출
v.start();
// v.key는 false