欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java -- 父类和子类拥有同名的成员变量的情况

程序员文章站 2023-12-21 21:53:10
...

Java – 父类和子类拥有同名的成员变量取值情况

参考文章
结论:

  1. 当子类的成员变量与父类同名时,若对该成员变量进行操作的方法继承于父类,则改变和获取的是父类的成员变量。
  2. 若对该成员变量进行操作的方法为子类所独有,或override父类,则改变和获取的是子类自己的成员变量。

        当子类拥有与父类同名的成员变量时,父类的成员变量并不会被覆盖,而是与子类的成员变量分别存储在不同的空间,其值仍然可以被改变和访问。

class Employee{

    private String title = "Employee";

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTitle() {
        return this.title;
    }

}

class Manager extends Employee{

    private String title = "Manager";

}

class Director extends Employee{

    private String title = "Director";

    public String getTitle() {
        return this.title;
    }
}

public class SameName {

    public static void main(String[] args) {

    Employee e = new Employee();
    Employee m = new Manager();
    Director d = new Director();

    System.out.println(e.getTitle());

    //子类Manager的getTitle方法继承于父类Employee,
    //因此调用时,访问的是父类的同名成员变量
    System.out.println(m.getTitle());

    //子类Director override父类的getTitle方法,
    //因此调用时,访问的是子类自己的成员变量
    System.out.println(d.getTitle());

    //子类Director的setTitle方法继承于父类Employee,
    //因此调用时,改变的是父类的同名成员变量
    d.setTitle("President");
    System.out.println(d.getTitle());

    }
}

运行输出结果为

Employee
Employee
Director
Director


因此,当子类的成员变量与父类同名时,若对该成员变量进行操作的方法继承于父类,则改变和获取的是父类的成员变量。

若对该成员变量进行操作的方法为子类所独有,或override父类,则改变和获取的是子类自己的成员变量。

上一篇:

下一篇: