对于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
好吧,今天就先到这里吧、、、
时间: 2024-10-30 03:14:23