(어떠한 경우에 상속 관계로 묶는것이 좋은가?)
상속을 하면 하위 클래스는 상위 클래스의 모든 특성을 지니게 된다.
더하여 하위 클래스는 자신만의 추가적인 특성도 더하게 된다.
..은 ..이다. 의 관계
ex) 모바일폰 vs 스마트폰
<aside> ⚙ 모바일폰을 스마트폰이 상속한다.
class 스마트폰 extends 모바일폰 {…}
</aside>
⇒ 상속 관계에 있는 두 대상은 IS-A 관계를 가져야 한다.
ex) A is a B = A는 일종의 B이다. 스마트폰 is a 모바일폰 = 스마트폰은 일종의 모바일폰이다
Is - A 관계를 갖지 않는 두 클래스가 상속으로 연결된 경우 잘못된 상속임
class MobilePhone {
protected String number;
public MobilePhone(String num) {
number = num;
}
public void answer() {
System.out.println("Hi~ from " + number);
}
}
class SmartPhone extends MobilePhone {
private String androidVer;
public SmartPhone(String num, String ver) {
super(num);
androidVer = ver;
}
public void playApp() {
System.out.println("App is running in " + androidVer);
}
}
class MobilePhone {
protected String number;
public MobilePhone(String num) {
number = num;
}
public void answer() { // 모바일폰의 기능 (응답기능)
System.out.println("Hi~ from " + number);
}
}
class SmartPhone extends MobilePhone { // 스마트폰이 모바일폰 상속
private String androidVer;
public SmartPhone(String num, String ver) {
super(num);
androidVer = ver;
}
public void playApp() { // 스마트폰만 가지고있는 기능 (어플실행)
System.out.println("App is running in " + androidVer);
}
}
A = MobilePhone / B = SmartPhone
A클래스가 가지고있는 기능을 B는 다 가지고있고 +a의 기능을 더 가지고있다.