java有关构造器的面试题详解

时间:2023-03-08 15:41:01

1,编译器只会提供自动提供一个默认的无参数的构造函数

2,如果程序员没有给类A没有提供构造函数,则编译器会自动提供一个默认的无参数的构造函数,如果用户提供了自己的构造函数,则编译器就不在提供默认的无参数构造函数。

3.子类有多个构造方法时,父类要么没有构造方法,让系统自动提供默认构造方法,那么在执行子类构造方法之前先执行父类的默认构造方法;要么就提供一个显式的构造方法供子类的构造方法调用。

4,只发生在子类构造方法中出现super(,,)显性调用时,否则不报错,子类B实例化时会自动调用父类A的默认构造函数(调用对应参数的构造方法),所以如果A的默认的无参数的构造函数为private,则编译器会报错,而如果A没有提供默认的无参数的构造函数,而提供了其他类型的构造函数,编译器同样会报错,因为B找不到A的默认无参数构造函数。所以,我们最好给父类A提供一个无参数的构造函数。或者在B的构造函数中显示的调用父类A的有参构造函数。super(paramete

5,当类中只是显性写出来带参数的构造函数,但new对象时不带参数,就会报错,此时编译器不会java提供一个默认的无参数的构造函数

1.this()和super()必须放在第一行,且不能同时出现在一个函数中

2.this(),super都指的是对象,所以不能出现在static中

3,构造方法不能被继承

4,构造方法不是类的成员方法