最近,在一次采访中,我被问到:“Java中动态多态性的一个例子是什么?”
我回答说,“方法重写”。
然后面试官问:“是否有任何压倒一切的概念没有进入动态多态?”
这真的是个好问题吗?如果是,答案是什么?
提前谢谢。
发布于 2013-08-01 16:13:53
如果问题是关于C++的,那么答案应该是“是”,因为成员函数不一定是虚拟的。然而,在Java中,所有方法都是C++术语中的虚拟函数,因此不可能在不涉及动态调度的情况下涉及覆盖的概念,这会导致多态行为。
任何其他将成员命名为与超类成员相同的示例都不称为重写,而是隐藏,这是一个完全不同的概念:子类成员与超类成员没有任何关系,它恰好具有相同的名称。子类甚至可以继承同名成员,因此有两个同名成员,它们仍然可以通过用类名限定成员名来访问。
https://stackoverflow.com/questions/17998946
复制相似问题