访问子类对象的实例变量
来源:互联网 发布:苹果mac 笔记本电脑 编辑:程序博客网 时间:2024/05/15 08:35
先上代码
class Base
{
private int i = 2;
public Base()
{
System.out.println(“base的i=”+this.i);//输出为2
System.out.println(“base的i=”+this.getClass());//输出Derived对象
this.display();}public void display(){ System.out.println("base1的i="+this.i); System.out.println(i);}
}
class Derived extends Base
{
private int i = 22;
public Derived(){ i = 222;}public void display(){ System.out.println("Derived的i="+this.i); System.out.println(i);}
}
public class Test
{
public static void main(String[] args) {
new Derived();
}
}
`
开始很疑惑为何输出的是0 而不是2 后来才发现这样的规则书上是这样说的:当变量的编译时类型和运行时类型不同时,系统在调用它的实例变量和实例方法时存在差异。
当this在构造器中时,this代表正在初始化的Java对象。如果this在父类的构造器中,它编译时的类型是父类的类型。
结论:当变量的编译时类型和运行时类型不同时,通过该变量访问它引用对象的实例变量时该实例变量的值由声明该变量的类型决定。但是通过该变量调用它引用的对象的实例方法时,该方法行为将由它实际所引用的对象来决定。
0 0
- 访问子类对象的实例变量
- 访问子类对象的实例变量
- 访问子类对象的实例变量
- 访问子类对象实例变量
- Java 构造器之访问子类对象的实例变量
- Java之访问子类对象的实例变量
- java 父类访问子类对象的实例变量 继承过程中的执行顺序
- OC中继承子类对象调用方法机制 子类对象访问父类中的实例变量
- OC中继承子类对象调用方法机制 子类对象访问父类中的实例变量
- 静态变量、实例变量初始化时机,以及子类隐藏父类成员时,创建子类对象的一些问题
- 子类对象的实例化
- java一种极端情况下出现父类访问子类的实例变量的情况
- C++接口定义,实现,继承接口类的子类,实例对象访问方法问题
- 子类对象的实例化过程
- 关于子类对象的实例化过程
- 子类对象的实例化过程
- 子类对象的实例化过程
- 子类对象的实例化过程
- 正负号标记法在数组相关程序中的使用
- 关于while里面条件变量的注意事项
- position属性解析
- Linux文件操作
- web入门知识点
- 访问子类对象的实例变量
- PHP字符串处理大全
- nginx基本概念介绍
- XILINX FPGA时钟资源
- java高并发解决方案
- ACL 2016&2015 Accepted Papers
- getopts函数中使用
- 进程2的创建与执行
- 【expect】使用心得