【转载】java继承 初始化顺序
2015-02-24 20:05
351 查看
原文地址:http://blog.csdn.net/yunzhongguwu005/article/details/9698717
[java] view
plaincopy
package Study.Initialization;
class Base{
private String str1=init("str1");
private String str2=init("str2");
public static String str3=init("static str3");
public Base(String str1,String str2){
System.out.println("Run Construction Base");
this.str1=str1;
this.str2=str2;
}
protected static String init(String str){
System.out.println(str);
return str+" init";
}
}
class Derived extends Base{
private String str4=init("str4");
public static String str5=init("static str5");
public Derived(String str1,String str2,String str4){
super(str1,str2);
System.out.println("Run Construction Derived");
this.str4=str4;
}
}
public class extendInitialization {
public static void main(String[] args) {
System.out.println("run extendInitialization.main()");
Derived d=new Derived("construction str1","construction str2","construction str4");
System.out.println("----------------------------------------");
Derived d2=new Derived("construction str11","construction str22","construction str44");
}
}
运行结果:
run extendInitialization.main()
static str3
static str5
str1
str2
Run Construction Base
str4
Run Construction Derived
----------------------------------------
str1
str2
Run Construction Base
str4
Run Construction Derived
总结:
Derived的初始化顺序:
1.按定义时的顺序初始化基类的static成员
2..按定义时的顺序初始化扩展类的static成员
(以上两条是对第一次定义扩展类对象时运行)
3.按定义时顺序执行基类的指定初始化
4.执行基类的构造函数
5 按定义时的顺序执行扩展类的指定初始化
6.行扩展类的构造函数
[java] view
plaincopy
package Study.Initialization;
class Base{
private String str1=init("str1");
private String str2=init("str2");
public static String str3=init("static str3");
public Base(String str1,String str2){
System.out.println("Run Construction Base");
this.str1=str1;
this.str2=str2;
}
protected static String init(String str){
System.out.println(str);
return str+" init";
}
}
class Derived extends Base{
private String str4=init("str4");
public static String str5=init("static str5");
public Derived(String str1,String str2,String str4){
super(str1,str2);
System.out.println("Run Construction Derived");
this.str4=str4;
}
}
public class extendInitialization {
public static void main(String[] args) {
System.out.println("run extendInitialization.main()");
Derived d=new Derived("construction str1","construction str2","construction str4");
System.out.println("----------------------------------------");
Derived d2=new Derived("construction str11","construction str22","construction str44");
}
}
运行结果:
run extendInitialization.main()
static str3
static str5
str1
str2
Run Construction Base
str4
Run Construction Derived
----------------------------------------
str1
str2
Run Construction Base
str4
Run Construction Derived
总结:
Derived的初始化顺序:
1.按定义时的顺序初始化基类的static成员
2..按定义时的顺序初始化扩展类的static成员
(以上两条是对第一次定义扩展类对象时运行)
3.按定义时顺序执行基类的指定初始化
4.执行基类的构造函数
5 按定义时的顺序执行扩展类的指定初始化
6.行扩展类的构造函数
相关文章推荐
- 复习一下Java中继承关系的类的初始化顺序
- java对象中继承和变量初始化顺序浅析
- Java继承时的初始化顺序
- Java中类继承的初始化顺序
- java继承中初始化的顺序
- JAVA继承关系中的初始化顺序
- Java继承中父类与子类的初始化顺序
- Java继承时的初始化顺序
- JAVA中继承时的初始化顺序
- JAVA第七节-继承,继承中方法重写,继承的初始化顺序,final关键字,super关键字,object类
- java中继承与初始化顺序 2
- Java关于继承的详细初始化顺序
- java类的初始化顺序及继承顺序
- Java继承 学习 && 类初始化顺序
- java之组合,继承,以及多态初始化的顺序
- java继承情况下初始化顺序
- java 继承 及 初始化顺序
- java基础之——类的初始化顺序(转载)
- 【慕课笔记】U3 继承 第3节 JAVA中的继承初始化顺序
- Java继承关系中类的初始化顺序