📅  最后修改于: 2023-12-03 15:40:49.288000             🧑  作者: Mango
在Java中,子类可以继承父类的数据成员和方法。此外,子类还可以添加新的数据成员和方法。但是如果子类和父类具有相同的数据成员,Java会如何处理呢?
Java中,如果子类和父类具有相同的数据成员,子类会覆盖父类的数据成员。这意味着子类的数据成员会完全取代父类的数据成员,无论是在子类内部还是在子类的实例中。
以下是一个例子,说明了如何在子类中覆盖父类的数据成员:
class Parent {
String name = "Parent";
}
class Child extends Parent {
String name = "Child";
}
public class Test {
public static void main(String[] args) {
Child child = new Child();
System.out.println(child.name);
}
}
在这个例子中,Child类继承了Parent类的name属性。但是Child类中也有一个名为name的属性,并且它的值为"Child"。当我们创建Child类的实例并访问它的name属性时,输出的结果是"Child",而不是父类的"Parent"。
如果子类覆盖了父类的数据成员,但又想在子类中访问父类的数据成员,可以使用Java中的super关键字。super关键字可以用来引用父类中的成员变量,方法和构造函数。
以下是一个例子,演示如何使用super关键字引用父类的数据成员:
class Parent {
String name = "Parent";
}
class Child extends Parent {
String name = "Child";
void getName() {
System.out.println(super.name);
}
}
public class Test {
public static void main(String[] args) {
Child child = new Child();
child.getName();
}
}
在这个例子中,Child类中添加了一个getName方法,该方法使用super关键字来引用父类的name属性。当我们调用该方法时,输出的结果是"Parent",而不是子类的"Child"。
在Java中,子类和父类可以具有相同的数据成员。如果子类覆盖了父类的数据成员,可以使用super关键字引用父类的数据成员。