是否存在任何不属于动态多态的压倒一切

时间:2013-08-01 15:57:59

标签: java polymorphism method-overriding

最近在接受采访时,我被问到“Java中动态多态的例子是什么?”

我回答说,“方法重写”。

然后,采访者问道:“是否有任何压倒一切的概念没有进入动态多态?”

这真的是个好问题吗?如果是,答案是什么?

提前致谢。

1 个答案:

答案 0 :(得分:3)

如果问题是关于C ++的,那么答案就是"是"因为成员函数不必是虚拟的。但是,在Java中,所有方法都是C ++术语中的虚函数,因此如果不涉及动态调度就不可能涉及覆盖的概念,这会导致多态行为。

将成员命名为与超类成员相同的任何其他示例不称为覆盖,而是隐藏,并且是一个完全不同的概念:子类member与superclass成员没有任何关系,它恰好具有相同的名称。子类甚至可以继承同名的成员,因此有两个同名的成员,通过使用类名限定成员名,仍然可以访问它们。