父类 子类 构造方法 初始化 执行顺序
来源:百度文库 编辑:神马文学网 时间:2024/04/29 04:23:19
如果子类构造函数里没有super,系统默认super(),
顺序是:先父类,后子类,对于每个类,都是先初始化,在调用构造方法
“父类的构造方法调用发生在子类的变量初始化之前”。可以用下面的例子来证明:
例一
// Petstore.java
class Animal {
Animal() {
System.out.println("Animal");
}
}
class Cat extends Animal {
Cat() {
System.out.println("Cat");
}
}
class Store {
Store() {
System.out.println("Store");
}
}
public class Petstore extends Store{
Cat cat = new Cat();
Petstore() {
System.out.println("Petstore");
}
public static void main(String[] args) {
new Petstore();
}
}
运行这段代码,它的执行结果如下:
Store
Animal
Cat
Petstore
例二
class C {
C() {
System.out.print("C");
}
}
class D {
D() {
System.out.print("D");
}
}
class A {
C c = new C();
A() {
this("A");
System.out.print("A");
}
A(String s) {
System.out.print(s);
}
}
public class B extends A {
D d= new D();
B() {
// super("A->B");
System.out.print("B");
}
public static void main(String[] args) {
new B();
}
}
打印是CAADB
$处若执行的话打印是CA->BDB
顺序是:先父类,后子类,对于每个类,都是先初始化,在调用构造方法
“父类的构造方法调用发生在子类的变量初始化之前”。可以用下面的例子来证明:
例一
// Petstore.java
class Animal {
Animal() {
System.out.println("Animal");
}
}
class Cat extends Animal {
Cat() {
System.out.println("Cat");
}
}
class Store {
Store() {
System.out.println("Store");
}
}
public class Petstore extends Store{
Cat cat = new Cat();
Petstore() {
System.out.println("Petstore");
}
public static void main(String[] args) {
new Petstore();
}
}
运行这段代码,它的执行结果如下:
Store
Animal
Cat
Petstore
例二
class C {
C() {
System.out.print("C");
}
}
class D {
D() {
System.out.print("D");
}
}
class A {
C c = new C();
A() {
this("A");
System.out.print("A");
}
A(String s) {
System.out.print(s);
}
}
public class B extends A {
D d= new D();
B() {
// super("A->B");
System.out.print("B");
}
public static void main(String[] args) {
new B();
}
}
打印是CAADB
$处若执行的话打印是CA->BDB
父类 子类 构造方法 初始化 执行顺序
CSDN技术中心 JAVA类初始化顺序,经典例程
Tapestry的函数的执行顺序
[转载] Tapestry页面提交执行顺序
Flex 程序的初始化顺序 - 宋欢的博客 - CSDN博客
宝马X5遥控器匹配及钥匙初始化同步方法
web.xml的filter执行顺序导致的乱码,切记!
Javascript在网页页面加载时的执行顺序
实现LoadRunner多个场景的顺序执行
通过一个程序分析C++中析构与构造函数的调用顺序
电子类网站~~
电子类网站~~
调整有线节目顺序方法(图)
文章的表达顺序与表达方法
美国股票期权执行方法
提高执行力的方法
三十六种死刑执行方法
Spring内核研究-set方法注入和构造函数注入
家用燃气灶构造图解及常见故障、处理方法
外部系统 访问已初始化的spring实例, 目前找到两种方法
08款 欧蓝德发动机的怠速学习程序、初始化方法和节气门控制伺服
外部系统 访问已初始化的spring实例, 目前找到两种方法
丰田皇冠锐志轮胎气压报警灯的初始化设定方法
验证GridView绑定SqlDataSource删除行时的事件执行顺序(原创)