继承体系中初始化和类的加载



/*
 *  2018年3月22日15:27:36
 *   代码目的:
 *     了解包括继承在内的初始化过程。
 *     在Beetle上运行Java时,所发生的第一件事就是试图访问Beetle.main(),
 *     一个static方法,于是加载器开始自动并找出Beetle类的编译代码(在名
 *     为Beetle.class的文件之中,在对它进行加载的过程中,编译器注意到它有
 *     一个基类,这是由关键字extends得知的),于是它继续进行加载。不管你
 *     是否要产生一个该基类的对象,这都要发生。
 *    
 *     注意:k是普通的成员,因此在创建Beetle的对象之前会初始化,
 *     而初始化发生在Beetle()函数调用构造函数之前进行。
 * */

//: reusing/Beetle.java
// The full process of initialization.
import static net.mindview.util.Print.*;

class Insect {
  private int i = 9;
  protected int j;
  Insect() {
    print("i = " + i + ", j = " + j);
    j = 39;
  }
  private static int x1 =
    printInit("static Insect.x1 initialized");
  static int printInit(String s) {
    print(s);
    return 47;
  }
}

public class Beetle extends Insect {
  private int k = printInit("Beetle.k initialized");
  public Beetle() {
    print("k = " + k);
    print("j = " + j);
  }
  private static int x2 =
    printInit("static Beetle.x2 initialized");
  public static void main(String[] args) {
    print("Beetle constructor");
    Beetle b = new Beetle();
  }
} /* Output:
static Insect.x1 initialized
static Beetle.x2 initialized
Beetle constructor
i = 9, j = 0
Beetle.k initialized
k = 47
j = 39
*///:~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值