说说 Java 类继承中的 is-a 关系以及 is-like-a 关系

纯粹的继承关系是派生类只覆盖基类的方法。这种基类和派生类的关系称为 is-a 关系。比如 “笔记本是电脑”。

有时候,我们会在派生类中实现新的接口,用于扩展派生类。虽然新的派生类仍然可以替代基类,但基类无法访问派生类中新实现的方法。这种关系称为 is-like-a 关系,即这个派生类像基类,但并不完全是。

比如说,笔记本电脑具有“计算”功能,所以它可以从“计算机”基类中派生出来。而手机也具有“计算”功能,所以也是派生于“计算机”基类。但手机还有“通讯”功能,原有的“计算机”基类没有包含这一设计。这时,我们需要新建一个通讯接口,让“手机”派生类实现这一接口。这样,这个“手机”派生类与计算机基类就是 is-like-a 关系啦O(∩_∩)O哈哈~


这也说明了原来的基类不够一般化,应该改为智能系统,包含“计算”与“通讯”等功能。这也是在现实世界经常会遇到的情况。通过不断优化设计,让模型更符合现实世界。

你可能感兴趣的:(说说 Java 类继承中的 is-a 关系以及 is-like-a 关系)