[Java] 父类和子类拥有同名的成员变量(fields)…
2019-08-16 09:26:18来源:博客园 阅读 ()
[Java] 父类和子类拥有同名的成员变量(fields)的情况
首先,需要明确的是,无论是通过casting,还是通过将子类对象的reference赋值给父类变量,都无法改变该reference所指对象的真实类型。但当该reference的类型是父类时,将无法调用只存在于子类中的方法。
当子类拥有与父类同名的成员变量时,父类的成员变量并不会被覆盖,而是与子类的成员变量分别存储在不同的空间,其值仍然可以被改变和访问。
如下例:
1 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父类,则改变和获取的是子类自己的成员变量。
原文链接:https://www.cnblogs.com/shuai2019/p/11103328.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash