C ++与Java的继承

在C ++和Java中,有继承的概念。继承属性用于重用代码,并在两个对象之间建立关系。在这里,我们将看到C ++继承和Java继承之间的一些基本区别。

  • 在Java中,所有类都在扩展Object类。因此,总会有一个类的单级继承树。对象类位于树的根目录。让我们使用简单的代码来检查这是否正确。

示例

//This is present in the different file named MyClass.java
public class MyClass {
   MyClass() {
      System.out.println("这是MyClass的构造函数。");
   }
}
//这是另一个名为Test.Java的文件
public class Test {
   public static void main(String[] args) {
      MyClass obj = new MyClass();
      System.out.println("obj is an instance of Object: " + (obj instanceof Object));
   }
}

输出结果

这是MyClass的构造函数。
obj is an instance of Object: true
  • 在Java中,可以直接访问祖父母类的成员。

  • 与C ++相比,Java中受保护的可见性几乎没有什么不同。在Java中,即使不是从基类派生的,也可以从同一包的另一个类访问基类的受保护成员。在这里,可以从Test访问MyClass的受保护成员。

示例

//This is present in the different file named MyClass.java
public class MyClass {
   protected int x = 10;
   protected int y = 20;
}
//这是另一个名为Test.Java的文件
public class Test {
   public static void main(String[] args) {
      MyClass obj = new MyClass();
      System.out.println("x is: " + obj.x + " y is: " + obj.y);
   }
}

输出结果

x is: 10 y is: 20
  • 在Java中,我们使用Java的extends关键字进行继承。在C ++中,我们可以确定继承的可见性,例如public,protected和private,但是在这里我们不能更改可见性。因此,如果某个成员是公共的或在基类中受保护,则它们也将是公共的或在派生类中受保护。

  • 在Java中,默认情况下所有方法都是虚拟的。在C ++中,我们必须指定virtual关键字。

  • 在C ++中,我们可以使用多重继承。在Java中,我们不能直接创建多重继承。为了减少歧义,java支持接口以获得多重继承的效果。接口是纯粹的抽象基类,其中没有完整的功能,因此没有歧义。