首页 > 解决方案 > 多态性如何促进可扩展性?

问题描述

在学习 OOP 时,我遇到了多态的概念。对于初学者来说,理解多态性可能很棘手。现在我对继承子类化和方法覆盖有了基本的了解,我仍然想了解多态性是如何促进可扩展性的?.

标签: javapolymorphism

解决方案


想想一个软件单元,它向外部世界公开一个简单的接口,一个接受超类型对象作为输入并在这个超类型对象上调用一些多态方法的方法。

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);

基本单位将保持不变。


推荐阅读