【发布时间】:2012-01-13 02:04:20
【问题描述】:
我的问题是关于继承和多态性。
我有一个类 A,它是超类。 B 和 C 类扩展了 A 并且是子类。
现在我在其他类(不是 A 或 B 或 C)中有一个函数,它接受 A 类型的参数。因此,多态性允许我们将参数作为 A 、 B 或 C 传递给该函数。现在在该函数中,为了访问 B 的属性,我必须将接收到的参数类型转换为 B。
类型转换是一种好的编程技术吗?如果不是,这里的多态性有什么用?
谢谢。
【问题讨论】:
-
好处是代码重用和提供不同的行为。这就是为什么它被称为多态性。
-
你的意思是在你的方法中,你想要一个 A 类型的对象(以及它的子类),但是如果该对象恰好是 类型B 您想访问特定于 B 的属性(即在 A 中不可用的属性)?
-
没错,这就是我要找的
-
您可能希望将访问者或策略模式作为检查类、强制转换和使用 if 语句来处理不同类的替代方案。