默认虚拟行为在C ++和Java中有何不同?

在C ++中,默认情况下,类成员方法是非虚拟的。这意味着,可以通过指定将它们虚拟化。

另一方面,在Java中,方法默认情况下是虚拟的,并且可以借助'final'关键字将其设置为非虚拟的。

示例

class base_class{
   public void display_msg(){
      System.out.println("The display_msg method of base class class");
   }
}
class derived_class extends base_class{
   public void display_msg(){
      System.out.println("The display_msg of derived class called");
   }
}
public class Main{
   public static void main(String[] args){
      base_class my_instance = new base_class();;
      my_instance.display_msg();
   }
}

输出结果

The display_msg method of base class class

创建名为“ base_class”的类,该类具有函数“ display_msg”。此功能仅显示一条相关消息。另一个名为“ derived_class”的函数是从“ base_class”继承的。此类还具有显示相关消息的“ display_msg”。另一个名为Main的类包含main函数,在其中创建base_class的实例。该实例调用“ display_msg”,并且输出显示在屏幕上。