您的位置:首页 > 编程语言 > Java开发

Java类中继承与初始化

2015-11-03 17:18 531 查看
Java类中继承与初始化(包含static)

<span style="font-size:18px;">package cm.java.Practic7;

class Insect {
private int i = 9;
protected int j;

Insect() {
System.out.println("i = " + i + ",j = " + j);
j = 39;
}

private static int x1 = printInit("static Insect.x1 initialized");

static int printInit(String s) {
System.out.println(s);
return 47;
}
}

public class InitWithExtendP146 extends Insect {

private int k = printInit("InitWithExtendP146.k initialized");

public InitWithExtendP146() {
System.out.println("k = " + k + ",j =" + j);
}

private static int x2 = printInit("static InitWithExtendP146.x2 initialized");

public static void main(String[] args) {
System.out.println("InitWithExtendP146 constructor");
InitWithExtendP146 b = new InitWithExtendP146();
}
}
</span>输出的结果:
<span style="font-size:18px;">static Insect.x1 initialized
static InitWithExtendP146.x2 initialized
InitWithExtendP146 constructor
i = 9,j = 0
InitWithExtendP146.k initialized
k = 47,j =39
</span>

总结如下:

先statc的数据成员,再static的方法;

先基类的数据成员,构造函数,再自己的数据成员,构造函数。

过程如下:

1 首先:寻找InitWithExtendP146类中的mian函数,发现该类中static的数据成员

    所以首先加载静态数据成员,然后发现该类是继承于Insect,

    所以首先加载基类中的static数据成员

<span style="font-size:18px;">private static int x1 = printInit("static Insect.x1 initialized");</span>
输出:static Insect.x1 initialized

接着加载自己的数据成员

<span style="font-size:18px;">private static int x2 = printInit("static InitWithExtendP146.x2 initialized");</span>输出:static InitWithExtendP146.x2 initialized

2 静态函数:mian函数

<span style="font-size:18px;">System.out.println("InitWithExtendP146 constructor");</span>输出:InitWithExtendP146 constructor
然后:

<span style="font-size:18px;">InitWithExtendP146 b = new InitWithExtendP146();</span>这里,首先就是执行构造函数,首先基类的构造函数:
<span style="font-size:18px;">Insect() {
System.out.println("i = " + i + ",j = " + j);
j = 39;
}</span>输出:i = 9,j = 0

接着自己的数据成员:
<span style="font-size:18px;">private int k = printInit("InitWithExtendP146.k initialized");</span>输出:InitWithExtendP146.k initialized

然后构造函数:
<span style="font-size:18px;">public InitWithExtendP146() {
System.out.println("k = " + k + ",j =" + j);
}</span>输出:k = 47,j =39

所以整个输出:

static Insect.x1 initialized

static InitWithExtendP146.x2 initialized

InitWithExtendP146 constructor

i = 9,j = 0

InitWithExtendP146.k initialized

k = 47,j =39
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA 初始化顺序