到底怎麼辦:“是一個”與“有一個”

上節課我們具體地講述了繼承的機制,並且也設計了一個繼承樹,那麼問題來了:我不是要問挖掘機技術哪家強?我是要問如何來確定一個類是另一個類的子類呢?我們又如何設計一個類而不是某個類中的屬性呢?

“是一個”與“有一個”

這裡我們就要用這麼一個方法來檢驗它們二者之間的關係了:

我們說,手枪是枪械——OK没有问题那么手枪这个类就是枪械的子类

还有长剑是一把剑是一个冷兵器——没问题那这样一个顺序的继承树就出来了

或者……手机是一个显示器?——好吧手机有一个显示器或许会更恰当一些那么显示器就是手机的一个属性了

显示器有二极管——OK二极管就是显示器的属性

我们靠这样的一种思考方法能够快速甄别继承树的设计是否符合逻辑

對了

这个测试的方法还不仅关乎与二者之间一个继承树最底端类应该也能对最顶端的类有“是一个”这样的关系——比如“手枪是武器”这样,如果不行,那你的继承树设计恐怕就有了问题

 

顺序问题

我们一直在说继承树所以说这是一个树状的拓扑子类一定拥有父类但父类可不一定就拥有子类——所以说父类并不能知道子类的方法,相反,在子类里我们可以使用 super 这个关键字来调用父类里的方法比如我要扩充一下枪械的攻击方法就可以这样来做

 

我的日记本呢?

还记得我们说过日记本和 private 的比喻吗?标记为私有的方法和属性是不能被别人读取的!你的孩子在未经你许可的情况下也一样不能偷看你的日记!

所以我们说子类继承了父类所有成员的时候其实是不包括私有方法和属性的!这些成员只在本类里可见哟~

由...出版 R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

加入對話

1 評論

您的電子郵件地址不會被公開. 必填字段標 *