看到一本书上写着,当子类不带有构造函数的时候,系统会自动给子类加入一个构造函数,并且在该函数中执行父类的无参构造函数。但假如我在子类中自己定义了一个构造函数,并且让该子类的构造函数不执行父类的无参构造函数。但是运行一遍程序,父类的构造函数还是被执行了啊?
测试程序如下:
父类:
public class ancester{
//父类的无参构造函数,继承的子类被实例化的时候这个无参构造函数总会被调用。
public ancester(){
System.out.println("ancester");
}
}
子类:
public class child extends ancester{
public child(){}
public static void main(String args[]){
child ch = new child();
}
}
输出:
ancester
------------------当父类不变,子类改成这样的时候:
public class child extends ancester{
public child(){
System.out.println("aaaa");
}
public static void main(String args[]){
child ch = new child();
}
}
输出:
ancester
aaaa
-------------------
难道说明了子类不管有啥构造函数,都是必须执行一次父类的构造函数?有没有啥技巧方法能避免将子类实例化的时候调用父类的无参构造函数?
不知道我说明白没有……
测试程序如下:
父类:
public class ancester{
//父类的无参构造函数,继承的子类被实例化的时候这个无参构造函数总会被调用。
public ancester(){
System.out.println("ancester");
}
}
子类:
public class child extends ancester{
public child(){}
public static void main(String args[]){
child ch = new child();
}
}
输出:
ancester
------------------当父类不变,子类改成这样的时候:
public class child extends ancester{
public child(){
System.out.println("aaaa");
}
public static void main(String args[]){
child ch = new child();
}
}
输出:
ancester
aaaa
-------------------
难道说明了子类不管有啥构造函数,都是必须执行一次父类的构造函数?有没有啥技巧方法能避免将子类实例化的时候调用父类的无参构造函数?
不知道我说明白没有……
解决方案 »
- 求java实现植物大战僵尸的思路,文档,类图,谢谢!
- socket 连接 怎么知道客户端以及关闭
- 同时创建文件和向文件中输入数据问题
- 急!!!加密时,单引号不被当成一个字符,怎么办??? 先谢过了。
- javac命令参数encoding是给什么编码,有什么作用,unicode和utf-8有什么关系
- 向大师们请教
- 我想在应用程序中实现播放器
- setLayout(null)什么意思?
- Applet中,怎样让一个JEditorPane位于JButton的上边,也就是盖住JButton. (无内容)
- 创建对象的过程是违背开闭原则和依赖倒置原则,求解
- 用观察者模式写文档编辑器,大家给我个思路吧
- java中左移高位溢出不舍去么?还有没有节操啦
另:你想不调用,这是不可能的。JAVA的虚拟机决定了的事情,除非你能把这东西给改了。