方法的默认虚拟行为与C++和java相反。
null
在C++中,类成员方法默认为非虚方法。它们可以通过使用 事实上的 关键词。例如 Base::show() 在以下程序和程序打印中是非虚拟的 “Base::show()已调用” .
#include<iostream> using namespace std; class Base { public : // non-virtual by default void show() { cout<< "Base::show() called" ; } }; class Derived: public Base { public : void show() { cout<< "Derived::show() called" ; } }; int main() { Derived d; Base &b = d; b.show(); getchar (); return 0; } |
添加 事实上的 在定义 Base::show() 使程序打印 “已调用派生::show()”
在Java中,默认情况下方法是虚拟的,可以通过使用 最终的 关键词。例如,在下面的java程序中, show() 默认情况下是虚拟的,程序会打印 “已调用派生::show()”
class Base { // virtual by default public void show() { System.out.println( "Base::show() called" ); } } class Derived extends Base { public void show() { System.out.println( "Derived::show() called" ); } } public class Main { public static void main(String[] args) { Base b = new Derived();; b.show(); } } |
与C++非虚拟行为不同,如果我们添加 最终的 在中定义show()之前 基础 ,则上述程序编译失败。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END