📜  父类和子类在Java中具有相同的数据成员(1)

📅  最后修改于: 2023-12-03 15:40:49.288000             🧑  作者: Mango

Java中父类和子类具有相同的数据成员

在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"。

super关键字

如果子类覆盖了父类的数据成员,但又想在子类中访问父类的数据成员,可以使用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关键字引用父类的数据成员。