首页 技术 正文
技术 2022年11月23日
0 收藏 797 点赞 4,119 浏览 948 个字

构造器不具有多态性(它们是static方法,只不过该static声明是隐式的),但还是非常有必要理解构造器怎样通过多态在复杂的层次结构中运作,这一理解将有助于大家避免一些令人不快的困扰。

在main中创建对象调用构造器的顺序:

  1. 将分配给对象的存储空间初始化成二进制的零。
  2. 调用基类构造器。
  3. 按声明顺序调用成员的初始化方法。
  4. 调用导出类构造器的主体。
 //: polymorphism/Sandwich.java
// Order of constructor calls.
package polymorphism; import static net.mindview.util.Print.*; class Meal {
Meal() {
print("Meal()");
}
} class Bread {
Bread() {
print("Bread()");
}
} class Cheese {
Cheese() {
print("Cheese()");
}
} class Lettuce {
Lettuce() {
print("Lettuce()");
}
} //class Pickle{
// Pickle(){
// print("Pickle()");
// }
//} class Lunch extends Meal {
Lunch() {
print("Lunch()");
}
} class PortableLunch extends Lunch {
PortableLunch() {
print("PortableLunch()");
}
} public class Sandwich extends PortableLunch {
private Bread b = new Bread();
private Cheese c = new Cheese();
private Lettuce l = new Lettuce();
// private Pickle p = new Pickle(); public Sandwich() {
print("Sandwich()");
} public static void main(String[] args) {
new Sandwich();
}
} /*
* Output: Meal() Lunch() PortableLunch() Bread() Cheese() Lettuce()
* Sandwich()
*/// :~

销毁的顺序应该和初始化的顺序相反

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,942
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,466
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,281
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,095
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,728
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,765