Java中关于子类成员变量与父类成员变量同名
来源:互联网 发布:淘宝商城保健品 编辑:程序博客网 时间:2024/05/22 11:38
重写和重载是针对方法的,子类的变量可以覆盖父类的变量,但是不能改变父类的变量。
class Animals {int age = 10;void enjoy() {System.out.println("Animals enjoy!");}}class Dogg extends Animals {int age = 20;int weight;void enjoy() {System.out.println("Dog enjoy!");}}public class TestDuoTai {public static void main(String[] args) {Animals a = new Animals();a.enjoy();System.out.println(a.age);Dogg d = new Dogg();d.enjoy();System.out.println(d.age);Animals d1 = new Dogg();d1.enjoy();System.out.println(d1.age);Dogg s = (Dogg)d1;System.out.println(s.age);}}
打印结果:
Animals enjoy!
10
Dog enjoy!
20
Dog enjoy!
10
20
由此可见,父类和子类的变量是同时存在的,即使是同名。
子类中看到的是子类的变量,父类中看到的是父类中的变量。
它们互相隐藏,而同名的方法则是实实在在的覆盖(重写)。
如Animals d1 = new Dogg();
d1即是一个Animals的对象,也是一个Dogg的对象,
那么调用方法时,是根据对象的实际类型调用的,
实际类型是Dogg,所以永远调用子类的方法。
而访问成员变量就不同了,它是Animals时,访问的是父类的成员变量,
转型为Dogg的话,访问的就是子类的成员变量了。
1 0
- Java中关于子类成员变量与父类成员变量同名
- Java 理解 子类成员变量与父类成员变量同名 方法的重写
- 父类成员变量与子类成员变量的关系
- 父类和子类 同名成员变量和静态成员变量
- Java父类子类成员变量初始化
- java子类成员变量与父类重名问题解释
- 子类父类 成员同名
- java中成员变量与局部变量
- java 父类子类继承 同名变量 同名方法
- [C++] 继承与同名成员变量
- c++子类中初始化父类成员变量
- 父类和子类中存在同一个成员变量
- JAVA: 子类“覆盖”父类的成员变量
- java中子类与父类的同名变量覆盖问题
- 子类覆盖父类的成员变量
- 父类调用子类的成员变量
- Java编程中,子类可以用用这种方法给继承父类的成员变量赋值么?
- 局部变量与成员变量的同名问题&显示初始化
- 兼容ie6的背景透明文字不透明
- oracle分析函数over partition by 和group by的区别
- word_count
- Swift学习---基础三(区间运算符、控制器转移语句)
- iOS 编码和解码
- Java中关于子类成员变量与父类成员变量同名
- iOS开发者的99个绝佳资源
- DC/OS 安装部署
- android函数调用堆栈打印方法
- java 并发编程学习之二 ---- lock
- 有三种钱,你花得越多,赚得越多!
- SICP 习题2.29 二叉活动体
- Python3.4 ABAP 生成带有命令行参数的二维码EXE应用文件
- lampp下配置https,并设置cookie跨域