簡單的判斷方式: abstract class表示的是"is-a"關係,interface表示的是"like-a"關係。
不管是什麼門,一定都能開跟關,繼承Door的子類別要自己實作這個門怎麼開,怎麼關。
BDoor本身具有報警功能,但是本質上並不是一個警報器,因此不能直接繼承Alarmer,可以理解為BDoor像是一個警報器(Alarmer),具有報警(alarm)的功能。
ADoor本質上就是一個門(is a door),因此繼承Door沒有問題。
BDoor本質上就是一個門(is a door),因此繼承Door沒有問題。