Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
最近在一次采访中,有人问我,“Java 中动态多态的例子是什么?”
我回答说,“方法覆盖”。
面试官接着问道:“有没有什么不属于动态多态性的最重要的概念?”
这真的是一个好问题吗?如果是,答案是什么?
提前致谢。
如果问题是关于 C++ 的,那么答案将是“是”,因为成员函数不必是虚拟的。然而,在 Java 中,所有方法在 C++ 术语中都是虚函数,因此不可能在不涉及动态调度的情况下涉及覆盖的概念,这会导致多态行为。
将成员命名为与超类成员相同的任何其他示例,不称为覆盖,而是隐藏,并且是一个完全不同的概念:子类成员与超类成员没有任何关系,它只是碰巧有一样的名字。子类甚至可以继承同名成员,因此有两个同名成员,仍然可以通过使用类名限定成员名来访问它们。