Java类中继承与初始化

来源:互联网 发布:mac地址一样 修改 编辑:程序博客网 时间:2024/04/29 18:57

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 initializedstatic InitWithExtendP146.x2 initializedInitWithExtendP146 constructori = 9,j = 0InitWithExtendP146.k initializedk = 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

1 0