最近在接受采访时,我被问到“Java中动态多态的例子是什么?”
我回答说,“方法重写”。
然后,采访者问道:“是否有任何压倒一切的概念没有进入动态多态?”这真的是个好问题吗?如果是,答案是什么?
提前致谢。
答案 0 :(得分:3)
如果问题是关于C ++的,那么答案就是"是"因为成员函数不必是虚拟的。但是,在Java中,所有方法都是C ++术语中的虚函数,因此如果不涉及动态调度就不可能涉及覆盖的概念,这会导致多态行为。
将成员命名为与超类成员相同的任何其他示例不称为覆盖,而是隐藏,并且是一个完全不同的概念:子类member与superclass成员没有任何关系,它恰好具有相同的名称。子类甚至可以继承同名的成员,因此有两个同名的成员,通过使用类名限定成员名,仍然可以访问它们。