多态
构造器和多态
基类的构造器总是在导出类的构造过程中被调用,而且按照继承层次逐渐向上链接,以使每一个基类的构造器都能得到调用。
复杂对象构造器的调用规则(初始化顺序):
- 在其他任何事物发生之前,将分配对象的存储空间初始化成二进制的零
- 调用基类构造器(不断递归到根)
- 按照声明顺序调用成员初始化方法
- 调用导出类构造器的主体
Demo
class meal{
meal() {print("meal()");}
}
class bread{
bread() {print("bread()");}
}
class cheese{
cheese() {print("cheese()");}
}
class letture{
letture() {print("letture()");}
}
class lunch extends meal{
lunch() {print("lunch()");}
}
class protablelunch extends lunch{
protablelunch() {print("protablelunch()");}
}
public class sandwich extends protablelunch{
private bread b =new bread();
private cheese c =new cheese();
private letture l =new letture();
public sandwich() {print("sandwich()");}
public static void main(String[] args) {
new sandwich();
}
}
/* Out
meal()
lunch()
protablelunch()
bread()
cheese()
letture()
sandwich()
*/