1

最近在一次采访中,有人问我,“Java 中动态多态的例子是什么?”

我回答说,“方法覆盖”。

面试官接着问道:“有没有什么不属于动态多态性的最重要的概念?”

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

提前致谢。

4

1 回答 1

2

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

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

于 2013-08-01T16:13:53.253 回答