[개체지향] 추상 메서드/ 클래스
추상 메서드/ 클래스
추상화
- 여러 클래스에서 공통붐모를 뽑아 부모 클래스를 만드는 과정
- 자식마다 달리 작동하는 구현을 부모의 메서드 시그내처로 일반화하는 과정
구현이 없는 추상 클래스
public class Monster{
public void attack(){
...
inflictDamage(...)
}
protected void inflictDamage()
...
}
- attack은 Monster를 상속받는 각 자식마다 따로 구현해주어야 할것.
- inflictDamage는 자식각 attack에서 불러줘야하니 protected로 만듬
문제 : 다형성의 범위를 너무 넓게 잡음
- attack을 더이상 오버라이드 하지않음
- calculateDamage를 각 자식에서 구현하기로 함 Monster class는 구현이 필요없음
- Monster class의 문제점
- Monster 인스턴스는 생성하지않음
- Monster 메소드를 사용하지않지만 구현을해야함 따라서 실수할수있고 고의 트롤링가능
public abstract class Monster{
public final void attack(){
calculateDamage(...)
....
}
protected abstract int calculateDamage(Monster target);
}