默认虚拟行为在C++和Java中有什么不同
让我们讨论一下在C++和Java中方法的默认虚拟行为如何相反。请记住,在C++语言中,类成员方法默认情况下是非虚拟的。它们可以使用 virtual 关键词使之成为虚拟方法。例如,在下面的程序中 Base::show() 是非虚拟的,程序输出 “Base::show() called” 。
示例:
输出:
输出解释: 在Base::show()定义前添加virtual使得程序输出”Derived::show() called”,在Java中,方法默认情况下是虚拟的,并且可以使用final关键字使之成为非虚拟的。例如,在以下java程序中,show()默认情况下是虚拟的,程序输出 “Derived::show() called” 。
让我们看看在使用相同的概念时,java编程语言中会发生什么,通过下面提出的示例来说明。
示例:
输出:
注: 与C++的非虚拟行为不同,如果在 Base 的show()定义前添加 final 关键字,则上述程序编译失败。