构造方法理解

来源:1-1 课程简介

刘浠辰要一直努力

2021-04-27 21:07:54

如果父类有带参构造方法,子类没有显示调用父类构造方法;这个时候系统会不会为父类添加无参构造?子类会不会自动调用父类的无参构造?

写回答

4回答

好帮手慕阿园

2021-04-28

同学你好,下面两位同学的说法都是正确的,同学可以参考

系统不会为父类添加无参构造,此时子类调用父类的无参构造会报错

 在一个java类中如果没有写构造方法,JVM(Java虚拟机)会默认添加一个无参构造方法,但是当写了有参构造后,JVM(Java虚拟机)不会再默认添加一个;如果只写了一个带参构造,假如有一个子类继承了它,一般子类的无参构造默认去调用的是父类的无参构造(而此时父类并没有无参构造),这个时候就会报错了。

所以在开发中,无论用或不用都建议同学把无参构造写上,这是一个好的编程习惯。

祝学习愉快~


0

rock221

2021-04-27

补充下,父类有带参构造方法,没有无参构造方法,这时候系统会报错,需要把父类的无参构造加上才可以;这种情况是子类没有调用父类构造方法的时报错,如果子类调用父类的有参构造方法,父类可以不写无参构造;

0

rock221

2021-04-27

如果存在继承关系的话,

1:父类有带参构造方法,没有无参构造方法,这时候系统会报错,需要把父类的无参构造加上才可以;

2:当没有调用父类的构造方法时:

a:子类进行实例化的时候(无参),会默认先调用父类的无参构造,在调用自己的无参构造;

b:子类进行实例化(有参),没有调用父类的有参构造,这时候会优先调用父类的无参构造,再调用自己的有参构造;


0

执键写春秋

2021-04-27

  • 首先必须说明的是,只要是类就必定存在构造方法,在Java中如果一个类没有明确地声明一个构造方法时,则在编译时会直接生成一个无参数的、什么也不做的构造方法。

  • 其次,要提醒的是,在一个类中如果已经明确地声明了一个构造方法,那么程序编译时将不会再生成默认的构造方法,即一个类中应保证至少有一个构造方法。

  • 然后,如果子类的构造器没有显示地调用父类的构造器,则自动地调用父类默认即没有参数的构造器。如果父类没有不带参数的构造器,并且在子类的构造器中有没有显示地调用父类的其他参数的构造器,那么Java编译器将报告错误。

0

0 学习 · 16556 问题

查看课程