C++ 与 Java 中的默认虚拟行为

在 C++ 中,方法默认是非虚拟的。可以通过使用 virtual 关键字使它们成为虚函数。

示例代码

#include <iostream>
using namespace std;
class B {
   public: void s() //默认为非虚拟。在函数前使用 virtual 打印“In Derived”{
      cout<<" In Base \n";
   }
};

class D: public B {
   public: void s() {
      cout<<"In Derived \n";
   }
};

int main(void) {
   D d; // D类对象
   B &b = d;
   b.s();
   return 0;
}
输出结果
In Base.

在 Java 中,方法默认是虚拟的。可以通过使用 final 关键字使它们成为非虚拟功能。

示例代码

class B {
   public void s() {
      System.out.println("In Base"); // 默认虚拟
   }
}

class D extends B {
   public void s() {
      System.out.println(" In Derived");
   }
}

public class Main {
   public static void main(String[] args) {
      B b = new D();
      b.show();
   }
}
输出结果
In Base.