Java中父类成员变量被子类重写的实现

在Java中,子类可以对父类的成员变量进行“隐藏”。虽然术语是“重写”,但在Java中更准确的说法是“隐藏”。在这篇文章中,我将带你详细了解如何在Java中实现父类成员变量的隐藏,并给出相应的代码示例。

整体流程

实现步骤

步骤 操作 描述
1 定义父类 创建一个包含成员变量的父类
2 定义子类 创建一个子类并继承父类
3 在子类中定义相同名称的成员变量 子类声明一个与父类中同名的成员变量
4 实例化子类并访问变量 创建子类实例, 访问父类和子类的变量
5 验证结果 打印结果以观察隐藏效果

详细操作

1. 定义父类

首先,我们要创建一个父类 Parent。在这个类中,我们定义一个成员变量 name

public class Parent {
    // 定义一个父类成员变量
    String name = "Parent Name"; // 表示父类的名字
}

2. 定义子类

接下来,我们创建一个子类 Child,并使其继承自 Parent

public class Child extends Parent {
    // 定义一个与父类同名的成员变量
    String name = "Child Name"; // 表示子类的名字
}

3. 在子类中定义相同名称的成员变量

Child 类中,我们定义一个同名的 name 变量,注意这并不是对父类变量的重写,而是对其的隐藏。

4. 实例化子类并访问变量

创建 Child 类的实例,并通过该实例访问 name 变量。

public class Main {
    public static void main(String[] args) {
        // 创建子类实例
        Child childInstance = new Child();
        
        // 访问父类的变量
        System.out.println(childInstance.name); // 输出: Child Name

        // 通过父类引用访问变量
        Parent parentReference = childInstance;
        System.out.println(parentReference.name); // 输出: Parent Name
    }
}

5. 验证结果

main 方法中,我们首先输出子类实例的 name,接着通过父类引用访问。

类图示例

classDiagram
    class Parent {
        +String name
    }
    class Child {
        +String name
    }
    Parent <|-- Child

说明

  1. 父类 Parent 中定义了一个名为 name 的字符串变量,并赋值为 "Parent Name"
  2. 子类 Child 继承了 Parent 类,并定义了一个同名的字符串变量 name,其值为 "Child Name"
  3. 当我们通过子类的实例访问 name 变量时,输出的是子类的值 "Child Name",而通过父类引用访问则输出父类的值 "Parent Name"

总结

通过上述步骤,我们成功地实现了在Java中对父类成员变量的隐藏。这种操作在多态性的使用中显得尤为重要,因为它能够让我们根据需要灵活地访问变量。在实际开发中,需注意隐藏变量可能引起的混淆,合理使用,通过明确的文档注释来指导其他开发者理解代码逻辑。希望这篇文章能帮助你更好地理解Java中的类继承及成员变量的使用。