java - 多态性如何促进可扩展性?
问题描述
在学习 OOP 时,我遇到了多态的概念。对于初学者来说,理解多态性可能很棘手。现在我对继承、子类化和方法覆盖有了基本的了解,我仍然想了解多态性是如何促进可扩展性的?.
解决方案
想想一个软件单元,它向外部世界公开一个简单的接口,一个接受超类型对象作为输入并在这个超类型对象上调用一些多态方法的方法。
public void baseUnitMethod(SuperType object) {
object.polymorphicMethod();
}
现在让我们假设最初客户端代码只使用这个SuperType的一个特定实现。为了这个例子,我将它称为 OneSpecificType。到目前为止,我们的继承层次结构由一个基本SuperType和一个OneSpecificType 组成,后者扩展了SuperType并为此polymorphicMethod()提供了自己的实现。最后,我们最简单形式的客户端代码可能会创建一个新的OneSpecificType并将其作为参数传递给单元。
SuperType oneSpecific = new OneSpecificType();
baseUnitMethod(oneSpecific);
多态性促进可扩展性意味着我可以在我们的继承层次结构中引入其他特定类型的实现,并且将它们合并到我们的系统中所需的唯一更改是在客户端代码中,不需要对我们的基本单元进行任何更改。我们调用多态方法的基本单元独立于对象类型,当然考虑到所有这些类型都在相同的继承层次结构中。
使用两种特定类型,客户端代码将导致
SuperType oneSpecific = new OneSpecificType();
baseUnitMethod(oneSpecific);
SuperType secondSpecific = new SecondSpecificType();
baseUnitMethod(secondSpecific);
基本单位将保持不变。
推荐阅读
- java - 在 CPLEX for Java 中设置时间限制
- snowpack - snowpack:项目文件夹之外的参考文件
- python-3.x - 我应该在 Pytorch 的以下架构中将输入图像尺寸放在哪里?
- c++ - 使用`dlopen`时有关“未定义符号”的共享库错误
- netsuite - 此处应有一个选项,而不是在使用 sdfcli 命令验证或部署 SuiteApp 项目时返回的“T”
- python - UnicodeDecodeError:从 .txt 文件中读取西班牙语文本
- wxwidgets - wxOwnerDrawnComboBox-inherited 类不可聚焦
- linux - 将顶部输出重定向到文件时可以看到特殊字符
- java - 为什么我已经抛出未报告的异常 java.net.MalformedURLException?
- html - 如何使这些 div 响应任何设备?