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 支持接口来实现多重继承的效果。接口是纯抽象的基类,没有任何完整的功能,因此不存在歧义。