继承初始化
来源:互联网 发布:java 双亲委派 编辑:程序博客网 时间:2024/04/30 14:08
我们的代码中很多时候会用到继承以及static关键字,但是对于继承中类以及static的初始化过程我们却不一定很清楚,下面举个例子来简单说明其过程:
class Insect {
int i = 9;
int j;
Insect() {
prt("i = " + i + ", j = " + j);
j = 39;
}
static int x1 =prt("static Insect.x1 initialized");
static int prt(String s) {
System.out.println(s);
return 47;
}
}
public class JavaTest1 extends Insect {
int k = prt("Beetle.k initialized");
JavaTest1() {
prt("k = " + k);
prt("j = " + j);
}
static int x2 =prt("static Beetle.x2 initialized");
static int prt(String s) {
System.out.println(s);
return 63;
}
public static void main(String[] args) {
prt("Beetle constructor");
JavaTest1 b = new JavaTest1();
}
}
对JavaTest1 运行java时,发生的第一件事情是装载程序到外面找到那个类。在装载过程中,装载程序注意它
有一个基础类(即extends 关键字要表达的意思),所以随之将其载入。无论是否准备生成那个基础类的一
个对象,这个过程都会发生(请试着将对象的创建代码当作注释标注出来,自己去证实)。
若基础类含有另一个基础类,则另一个基础类随即也会载入,以此类推。接下来,会在根基础类(此时是
Insect)执行static 初始化,再在下一个衍生类执行,以此类推。保证这个顺序是非常关键的,因为衍生类
的初始化可能要依赖于对基础类成员的正确初始化。
此时,必要的类已全部装载完毕,所以能够创建对象。
结果输出:
static Insect.x1 initialized
static Beetle.x2 initialized
Beetle constructor
i = 9, j = 0
Beetle.k initialized
k = 63
j = 39
- 继承初始化
- 继承初始化
- 继承初始化
- 继承初始化
- 继承时的初始化
- Java 继承与初始化
- java继承的初始化
- java继承 初始化顺序
- OC的继承 初始化
- 继承的初始化
- 继承,初始化方法
- 继承变量初始化顺序
- 继承初始化小例
- java继承初始化顺序
- Java继承与初始化
- Java继承与初始化
- 继承初始化顺序
- 继承中的初始化问题
- 算法汇总
- HTTP协议详解
- 【题解】 2016 ACM/ICPC Asia Regional Dalian Online (2+5)
- 使用java实现,随机取4张牌,使用加减乘除得到24的所有可能情况
- 求格雷码的完整程序源代码
- 继承初始化
- java银联支付
- php中的几个字符串操作函数strtoupper strtolower ucwords ucfirst lcfirst函数
- android获取短信验证码并自动填写
- Java泛型与反射机制---学习笔记
- pl/sql导入存储过程
- mysql子查询中的陷阱
- sql防注入攻击与xss攻击
- PHP的内存泄露问题与垃圾回收