构造方法理解
来源:1-1 课程简介
刘浠辰要一直努力
2021-04-27 21:07:54
如果父类有带参构造方法,子类没有显示调用父类构造方法;这个时候系统会不会为父类添加无参构造?子类会不会自动调用父类的无参构造?
4回答
好帮手慕阿园
2021-04-28
同学你好,下面两位同学的说法都是正确的,同学可以参考
系统不会为父类添加无参构造,此时子类调用父类的无参构造会报错
在一个java类中如果没有写构造方法,JVM(Java虚拟机)会默认添加一个无参构造方法,但是当写了有参构造后,JVM(Java虚拟机)不会再默认添加一个;如果只写了一个带参构造,假如有一个子类继承了它,一般子类的无参构造默认去调用的是父类的无参构造(而此时父类并没有无参构造),这个时候就会报错了。
所以在开发中,无论用或不用都建议同学把无参构造写上,这是一个好的编程习惯。
祝学习愉快~
rock221
2021-04-27
补充下,父类有带参构造方法,没有无参构造方法,这时候系统会报错,需要把父类的无参构造加上才可以;这种情况是子类没有调用父类构造方法的时报错,如果子类调用父类的有参构造方法,父类可以不写无参构造;
rock221
2021-04-27
如果存在继承关系的话,
1:父类有带参构造方法,没有无参构造方法,这时候系统会报错,需要把父类的无参构造加上才可以;
2:当没有调用父类的构造方法时:
a:子类进行实例化的时候(无参),会默认先调用父类的无参构造,在调用自己的无参构造;
b:子类进行实例化(有参),没有调用父类的有参构造,这时候会优先调用父类的无参构造,再调用自己的有参构造;
执键写春秋
2021-04-27
首先必须说明的是,只要是类就必定存在构造方法,在Java中如果一个类没有明确地声明一个构造方法时,则在编译时会直接生成一个无参数的、什么也不做的构造方法。
其次,要提醒的是,在一个类中如果已经明确地声明了一个构造方法,那么程序编译时将不会再生成默认的构造方法,即一个类中应保证至少有一个构造方法。
然后,如果子类的构造器没有显示地调用父类的构造器,则自动地调用父类默认即没有参数的构造器。如果父类没有不带参数的构造器,并且在子类的构造器中有没有显示地调用父类的其他参数的构造器,那么Java编译器将报告错误。
相似问题