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
<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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统