标签:
对于Java这正语言来说,一般来说,子类可以调用父类中的非private变量,但在一些特殊情况下,
Java语言可以通过父类调用子类的变量
具体的还是请按下面的例子吧!
package com.yonyou.test;
/**
* 测试类
* @author 小浩
* @创建日期 2015-3-2
*/
class Base
{
// 定义了一个名为i的实例变量
private int i = 2;
public Base()
{
this.display(); //注意这里面的this代表当前正在运行的对象,即Derived对象
}
public void display()
{
System.out.println(i);
}
}
// 继承Base的Derived子类
class Derived extends Base
{
// 定义了一个名为i的实例变量
private int i = 22;
// 构造器,将实例变量i初始化为222
public Derived()
{
i = 222; //②
}
public void display()
{
System.out.println(i);
}
}
public class Test
{
public static void main(String[] args)
{
// 创建Derived的构造器创建实例
new Derived(); //①
}
}
最后的结果是多少呢?没错就是0,是不是很意外,这里你需要明白
public Base()
{
this.display(); //注意这里面的this代表当前正在运行的对象,即Derived对象
}
这里面的this指的是当前正在运行的那个对象,那么当前运行的对象是谁?没错,就是Derived对象,
根据java创建对象时初始化对象的时机(http://www.cnblogs.com/xiohao/p/4349833.html),我们知道这时Derived中的变量i还没有初始化,所以最后的结果为:0
好吧,今天就先到这里吧、、、
标签:
原文地址:http://www.cnblogs.com/xiohao/p/4349964.html