package com.zjlolife.extend; public class Client { public static void main(String []args){ Animal bird = new Bird(2); bird.say(); System.out.println(bird.i); } } class Animal { public int i = 3; public void say() { } } class Bird extends Animal { public int i; public void say() { System.out.println(i); } public Bird(int i) { this.i = i; } } //结果为: //2 //3 //子类向上转型后,无法访问自己的成员变量i,只能访问父类的成员变量i,此时同名变量子类的被隐藏了。 //但是却可以通过say()访问间接访问到自己的成员变量i。。值得思考。。。 总结:当一个类,编译期间是父类型的时候,是不能直接访问本身的成员变量,但是运行的时候会表现出自己的行为,并且可以通过行为来间接访问自己的成员变量,如 上面的say()方法,就可以间接访问本身的成员变量i,但是在编译期间的时候却不能直接访问本身的成员变量i,同名的时候访问的父类的成员变量i哦!!!!
还是那些继承实例二
最新推荐文章于 2021-11-08 08:00:00 发布