Java默认构造函数
时间:2020-02-23 14:34:59 来源:igfitidea点击:
在本教程中,我们将看到Java默认构造函数。
Default constructor
是没有参数的构造函数,由编译器插入,除非我们明确地提供任何其他构造函数。
我们将无法看到它,因为它存在于类文件中而不是源文件中。
没有参数构造函数和默认构造函数之间有什么区别吗?
如果我们在类中提供任何构造函数,则它不再是默认构造函数。
有很多关于它的辩论,但这是我的意见。
当我们没有提供任何构造函数时,编译将插入默认构造函数,该构造函数将调用超级类的默认构造函数。
我们需要确保超级类有NO-ARG构造函数。
让我们在一个示例的帮助下创建一个名为person.java的类
package org.igi.theitroad.constructor; public class Person { String name; int age; public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
创建另一个名为employee.java的类
package org.igi.theitroad.constructor; public class Employee extends Person { int empId; public int getEmpId() { return empId; } public void setEmpId(int empId) { this.empId = empId; } }
我们将使用此消息进行编辑错误。
"隐式超级构造函数 Person()
默认构造函数未定义。
必须定义一个显式构造函数"如我们所见,它告诉我们,该人类应该具有显式构造函数,否则它不会编译。
一旦添加arg构造函数 Person
类,我们不会再获取编译错误。
package org.igi.theitroad.constructor; public class Person { String name; int age; //Added explicit constructor public Person() { System.out.println("Added explicit constructor"); } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
正如我们可以看到将显式构造函数添加到Person类后,员工程序中不会有任何编译错误。