- 什么是构造函数?
构造函数用于初始化对象的状态。与方法类似,构造函数还包含在创建对象时执行的语句(即指令)的集合。 - 我们有Java中的Copy Constructor吗?
像C++一样,Java也支持复制构造函数。但是,与C++不同,如果您不编写,则Java不会创建默认的副本构造函数。
要将一个对象的值复制到Java中的另一个对象,可以使用:- 构造函数
- 将一个对象的值分配给另一个对象
- Object类的clone()方法
- 什么是构造函数链接?
构造函数链接是一种从一个构造函数调用另一个构造函数的技术。this()用于调用相同的类构造函数,而super()用于调用超类构造函数。// Java展示构造函数链接,使用this()用于调用相同的类构造函数 class Temp { // 默认构造函数1 // 会调用另一个构造函数,利用this关键字 Temp() { // 调用构造函数2 this(5); System.out.println("默认构造函数"); } // 参数构造函数 2 Temp(int x) { // 调用构造函数 3 this(5, 15); System.out.println(x); } // 参数构造函数 3 Temp(int x, int y) { System.out.println(x * y); } public static void main(String args[]) { // 先调用默认构造函数 new Temp(); } }
- 我们可以从超类构造函数中调用子类构造函数吗?
否。在Java中,无法从超类构造函数调用子类构造函数。 - 如果保留构造函数的返回类型会怎样?
理想情况下,构造函数不得具有返回类型。根据定义,如果方法具有返回类型,则它不是构造函数。(JLS8.8声明)它将被视为普通方法。但是编译器警告说该方法具有构造函数名称。class GfG { int GfG() { return 0; // 会被警告。。 } }
- 什么是没有参数构造函数?
没有参数的构造函数称为无参数构造函数。Java中的默认构造函数始终是无参数的构造函数。class GfG { public GfG() { //没有参数构造函数 } }
- 无参数构造函数与默认构造函数有何不同?
如果一个类不包含构造函数声明,则隐式声明一个没有正式参数且没有throws子句的默认构造函数。如果要声明的类是原始类Object,则默认构造函数的主体为空。否则,默认构造函数将简单地调用不带参数的超类构造函数。 - 什么是私有构造函数?在哪里使用它们?
像任何方法一样,我们可以为构造函数提供访问说明符。如果将其设为私有,则只能在类内部访问它。
我们使用私有构造函数的主要场景:- 内部构造函数链接
- 单例类设计模式
- 什么时候需要构造函数重载?
有时需要以不同的方式初始化对象,可以使用构造函数重载来完成。不同的构造函数可以通过实现不同的代码来完成不同的工作,并且根据类型和未传递的参数来调用它们。
根据情况,在重载的构造函数中使用特定数量的参数调用构造函数。 - 我们在Java中有析构函数吗?
没有,因为Java是一种自带垃圾收集语言,所以您无法预测何时(或什至)一个对象将被销毁。因此,没有析构函数的直接等效项。
0