继承与初始化和构造器的调用
2014-02-28 09:47
218 查看
调用构造器要遵循以下顺序:
1、调用基类构造器。这个步骤会不断反复递归下去,首先是构造这种层次结构的根,然后是下一层导出类,等等,直到最底层的导出类。
2、按声明顺序调用成员的初始化方法。
3、调用导出类构造器的主体。
继承与初始化
请看下例:
class Insect {
private int i = 9;
protected int j;// protected static int j; 上转型时 j 不再初始化,为39
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 Beetle extends Insect {
private int k = printInit("Beetle.k initialized");
public Beetle() {
System.out.println("k=" + k);
System.out.println("j=" + j);
}
private static int x2 = printInit("static Insect.x2 initialized");
public static void main(String[] args) {
System.out.println("Beetle constructor");
Beetle b = new Beetle();
System.out.println();
Insect a = new Beetle();
}
}
运行结果:
static Insect.x1 initialized
static Insect.x2 initialized
Beetle constructor
i=9,j=0
Beetle.k initialized
k=47
j=39
i=9,j=0
Beetle.k initialized
k=47
j=39
构造器的调用顺序
请看下例:
class Meal {
Meal() {
System.out.println("Meal()");
}
}
class Bread {
Bread() {
System.out.println("Bread()");
}
}
class Cheese {
Cheese() {
System.out.println("Cheese()");
}
}
class Lettuce {
Lettuce() {
System.out.println("Lettuce()");
}
}
class Lunch extends Meal {
Lunch() {
System.out.println("Lunch()");
}
}
class PortableLunch extends Lunch {
PortableLunch() {
System.out.println("PortableLunch()");
}
}
public class Sandwich extends PortableLunch {
private Bread b = new Bread();
private Lettuce l = new Lettuce();
private Cheese c = new Cheese();
public Sandwich() {
System.out.println("Sandwich()");
}
public static void main(String[] args) {
new Sandwich();
}
}
运行结果:
Meal()
Lunch()
PortableLunch()
Bread()
Lettuce()
Cheese()
Sandwich()
相关文章推荐
- OC之继承、初始化、便利构造器
- OC_继承,便利构造器,初始化方法
- 【继承】指定初始化方法【便利构造器】
- Objective-C学习笔记_继承、初始化方法、便利构造器
- 03 继承 初始化方法 便利构造器
- OC学习-继承,便利构造器,初始化方法
- Java中有关构造器初始化调用的问题
- Java 继承与多态(三)—构造器的调用顺序
- OC03 继承、初始化方法、便利构造器-1
- 诠释了继承类之间构造器(有参、无参)、对象初始化块和静态初始化块之间的关系及调用顺序
- OC基础:继承.初始化方法,便利构造器 分类: ios学习 OC 2015-06-16 19:27 84人阅读 评论(0) 收藏
- C++ 多继承构造函数初始化列表调用顺序
- Java——继承中构造器、实例域初始化顺序
- iOS OC03_继承,便利构造器,初始化方法
- 继承树的构造器调用顺序
- Java对象初始化步骤&&子类继承父类后变量与方法调用情况
- OC基础:继承.初始化方法,便利构造器
- 变量初始化,基类构造器,基类构造器中调用虚函数,子类构造器
- asp.net MVC中怎样让LINQ Designer自动生成的类从别的类继承并调用其基类构造器?
- OC第三天:继承、初始化⽅法、便利构造器