代码:
class Employee{
2
3 private String title = "Employee";
4
5 public void setTitle(String title) {
6 this.title = title;
7 }
8
9 public String getTitle() {
10 return this.title;
11 }
12
13 }
14
15 class Manager extends Employee{
16
17 private String title = "Manager";
18
19 }
20
21 class Director extends Employee{
22
23 private String title = "Director";
24
25 public String getTitle() {
26 return this.title;
27 }
28 }
29
30 public class SameName {
31
32 public static void main(String[] args) {
33
34 Employee e = new Employee();
35 Employee m = new Manager();
36 Director d = new Director();
37
38 System.out.println(e.getTitle());
39
40 //子类Manager的getTitle方法继承于父类Employee,
41 //因此调用时,访问的是父类的同名成员变量
42 System.out.println(m.getTitle());
43
44 //子类Director override父类的getTitle方法,
45 //因此调用时,访问的是子类自己的成员变量
46 System.out.println(d.getTitle());
47
48 //子类Director的setTitle方法继承于父类Employee,
49 //因此调用时,改变的是父类的同名成员变量
50 d.setTitle("President");
51 System.out.println(d.getTitle());
52
53 }
54 }
输出:
Employee
Employee
Director
Director
结论:
-
当子类的成员变量与父类同名时,若对该成员变量进行操作的方法继承于父类,则改变和获取的是父类的成员变量。
-
若对该成员变量进行操作的方法为子类所独有,或override父类,则改变和获取的是子类自己的成员变量。