在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支持接口以获得多重继承的效果。接口是纯粹的抽象基类,其中没有完整的功能,因此没有歧义。