public abstract class Child {
protected String childType;
protected double height;
protected double weight;
protected String bloodType;
protected int age;
protected abstract void smile();
protected abstract void cry();
protected abstract void sleep();
protected abstract void eat();
}
각각 smile, cry, sleep, eat가 내용이없이 정의 되어있다.
아래에서는 이러한 추상클래스를 상속받아 이용한다.
public class NewBornBaby extends Child {
@Override
protected void smile() {
System.out.println("신생아는 가끔 웃어요");
}
}
public class Infant extends Child {
@Override
protected void smile() {
System.out.println("영아는 많이 웃어요");
}
}
public class Toddler extends Child {
@Override
protected void smile() {
System.out.println("유아는 웃길 때 웃어요");
}
}
신생아, 영아, 유아 별로 고유의동작을 각각 자기에 맞게 정의하여 사용하고 있다.
public class ChildManageApplication {
public static void main(String[] args) {
Child newBornBaby = new NewBornBaby(); // (1)
Child infant = new Infant(); // (2)
Child toddler = new Toddler(); // (3)
newBornBaby.smile();
infant.smile();
toddler.smile();
}
}
실행결과
신생아는 가끔웃어요
영아는 많이 웃어요
유아는 웃길 때 웃어요
클라이언트 입장에서는 Chile라는 추상클래스만 일관되게 바라보면 나이에 맞게 알아서 적용시켜주는 것을 사용할 수 있다.