这个问题在这里已经有答案了:
this()和this(4个答案)
4个月前关门了。
package test;
public class Employee {
String name;
int age;
Employee() {}
Employee(String newName, int newAge) {
this();
name = newName;
age = newAge;
}
public static void main(String args[]) {
Employee e = new Employee("N", 43);
System.out.println();
}
}
在上面的代码中,除了作为从重载构造函数调用无参数构造函数的示例外,从有用性的Angular 来看,重载构造函数中“this()”的实际意义是什么?
3条答案
按热度按时间41ik7eoe1#
要调用默认构造函数,请使用this()。
flvlnr442#
在那个片段里?
什么都没有。
任何构造函数的顶部必须有
this()
打电话,或者super()
打电话。你不能不。如果编写失败,javac将注入:super();
对于您来说,如果这是无效的(例如,您的超类没有protected+no args构造函数),那么您的代码将无法编译。这就是粘贴的代码片段和假设的代码片段之间的区别
this();
已删除。desugaring,你可以得到:desugared,没有this():
用这个():
现在,注射,比如说,一个
System.out.println("Hello!");
在no-args构造函数中与现在有一个小的区别:与this()
,你会看到的Hello!
印刷的,没有它,你就不会。不管怎样,您最终都会调用超类的构造函数,因为这是必须发生的事情,不管怎样(只有java.lang.object不需要,在vm中硬编码;对象没有超类)。dfty9e193#
对我来说这是个错误的方向。
this()的典型用法是在参数中没有提供构造函数时为构造函数提供默认值,因为您不能直接调用构造函数。调整代码,例如:
Package 试验;
}