C++ 与 Java 中的继承

c++java 8server side programmingprogramming

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

  • 在 Java 中,所有类都扩展自 Object 类。因此,类始终存在一个单层继承树。Object 类位于树的根节点。让我们使用一段简单的代码来检查这一点是否正确。

示例

//这存在于名为 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 是 Object 的一个实例:" + (obj instanceof Object));
   }
}

输出

这是 MyClass 的构造函数。
obj 是 Object 的一个实例:true
  • 在 Java 中,祖父类的成员不能直接访问。

  • Java 中的 protected 可见性与 C++ 略有不同。在 Java 中,基类的 protected 成员可以从同一包中的另一个类访问,即使该类不是从基类派生而来的。这里,MyClass 的 protected 成员可以从 Test 访问。

示例

//这存在于名为 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 中,我们使用 extends 关键字进行继承。在 C++ 中,我们可以确定继承的可见性,例如 public、protected 和 private,但在这里我们无法更改可见性。因此,如果某个成员在基类中是 public 或 protected,那么在派生类中也将是 public 或 protected。

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

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


相关文章