如果父类没有无参的构造方法,系统会调用第一个带参数的构造方法创建对象。对吗
时间: 2023-12-06 07:40:01 浏览: 33
不完全正确。如果父类没有无参构造方法,且子类的构造方法中没有显示调用父类的构造方法,则编译器会报错。这是因为子类的构造方法中必须要调用父类的构造方法,以便完成父类中的初始化工作。如果子类构造方法中没有显示调用父类的构造方法,则编译器会默认调用父类的无参构造方法。但是,如果父类没有无参构造方法,编译器就无法自动调用父类的构造方法,此时子类的构造方法中必须显示调用父类的有参构造方法,并传入相应的参数。
相关问题
java在调用子类构造方法的时候会先调用父类的无参构造方法,目的是?
Java在创建子类对象时,会先调用父类的构造方法来完成父类对象的初始化。如果子类的构造方法没有显式调用父类的构造方法,则会默认调用父类的无参构造方法。这是因为子类继承了父类的属性和方法,需要先初始化父类的属性,才能保证子类的正确性。
如果父类没有无参构造方法,而只有有参构造方法,那么子类必须显式调用父类的有参构造方法来完成父类的初始化。这可以通过使用`super()`关键字来实现,例如`super(参数列表)`。在这种情况下,子类必须在构造方法的第一行显式调用`super()`或者`super(参数列表)`,否则编译器会报错。
下列描述中正确的是()。 选择一项: a. 子类不能继承父类的构造方法。 正确 b. 如果在子类的构造方法中,没有显式的写出super关键词来调用父类的某个构造方法,那么编译器默认的调用父类无参的构造方法super();如果父类没有无参的构造方法,系统会调用第一个带参数的构造方法创建对象。 c. 可以使用final修饰构造方法 d. 子类中想使用被子类隐藏的实例成员变量或实例方法,就需要使用关键词this
b. 如果在子类的构造方法中,没有显式的写出super关键词来调用父类的某个构造方法,那么编译器默认的调用父类无参的构造方法super();如果父类没有无参的构造方法,系统会调用第一个带参数的构造方法创建对象。 是正确的描述。 其他选项错误。子类可以继承父类的构造方法;构造方法不能被final修饰;this关键字用于指代当前对象的实例成员变量或实例方法,与被隐藏的父类的实例成员变量或实例方法无关。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)