请大家说说 子类被new出后为什么首先调用的是最终父类的构造函数? class B extends A {}class C extends B {}那么 new C()后首先调用的是A中的构造函数,大家能不能多方面的说说java为什么要这么做? 比如和捕获异常有什么关系么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 内部原理似乎和JVM 的设计有关。 顶5楼的,没有父类何来子类 public class Debug { public Debug(){ super(); //即使你不写编译器也要给你加上 }}/*顺便说一下new对象的执行顺序:1>申请对象程属性的内存2>属性默认初始化3>属性显示初始化4>执行构造器中的代码*/ 任何类都继承自Object类,他是所有类的老祖宗。哈哈,这叫OO。每个人都是有老祖宗的 每个构造方法的第一条语句是super();即使你不写,编译器在编译的时候也会为你加上。super()方法是用来调用父类的构造方法的。所以在new子类时会调用到父类的构造方法。为什么要这样设计呢?仔细想想就会明白,因为构造方法体内放的是类的初始化语句。 初始化顺序问题,推荐你看下TIJ,这个问题全世界就这本书讲的最好 5楼说的经典 建议你去看下java类的执行顺序 关于对象序列化小例子的2个小问题。 Hibernate 检索时的怪问题? import org.apache.tomcat.core.*; 编译通不过? 谁有张孝祥的java全套光盘阿~~ 怎么在JApplet中getImage?? linux下安装Sun ONE Studio的问题 javaw命令有什么作用 各位大侠,在下有礼了,我是半个程序员,现在有些概念要请教大教! 请教DateFormat时区问题 java Client端和C Server端通信中文乱码问题 一个小问题! 接口与继承有什么区别
public class Debug { public Debug(){
super(); //即使你不写编译器也要给你加上
}
}
/*顺便说一下new对象的执行顺序:
1>申请对象程属性的内存
2>属性默认初始化
3>属性显示初始化
4>执行构造器中的代码*/
即使你不写,编译器在编译的时候也会为你加上。
super()方法是用来调用父类的构造方法的。
所以在new子类时会调用到父类的构造方法。为什么要这样设计呢?
仔细想想就会明白,因为构造方法体内放的是类的初始化语句。