Java 在构造函数中调用super()
我刚刚使用了Eclipse的“使用字段生成构造函数”函数,它为我提供了以下构造函数:Java 在构造函数中调用super(),java,constructor,Java,Constructor,我刚刚使用了Eclipse的“使用字段生成构造函数”函数,它为我提供了以下构造函数: public Credentials(String userName, String password) { super(); this.userName = userName; this.password = password; } 凭证类没有显式扩展另一个类,因此它扩展了对象。 什么是super()callgood for?super()不带参数调用父构造函数 要将if用于参数,例
public Credentials(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
凭证
类没有显式扩展另一个类,因此它扩展了对象
。
什么是super()
callgood for?super()不带参数调用父构造函数
要将if用于参数,例如super(您的参数),它将调用接受参数类型的一个参数(if extists)的构造函数
它还可以用于从父级调用方法。即super.yourMethod()如果将构造函数定义为:
public Credentials(String userName, String password) {
this.userName = userName;
this.password = password;
}
然后编译器将向超类构造函数添加一个隐式调用,因此这不会对编译后的代码造成任何差异
Credentials类没有显式扩展另一个类,所以我猜它扩展了对象。什么是超级();打电话给好吗
但是您的类隐式扩展了
对象
,因此将调用对象()
。super关键字是对当前超类的“封闭”实例的引用
您可以使用它访问超类的方法或字段(如果它们可见)。如果您的类没有超类(由类凭据扩展了超类名称
指定),则该超类将自动成为对象
super()
方法调用调用超类的构造函数(没有参数的构造函数)。您只能在自己的类的构造函数中调用,而不能在任何其他方法中调用
例如:
class A {
private String m_name;
public A(String name){
m_name = name;
}
}
class B extends A {
public B(String firstName, String lastName){
//this calls the constructor of A
super(firstName + " " + lastName);
}
}
super()
调用父类构造函数,如果不添加此行,默认情况下将调用非参数构造函数
如果父类没有非参数构造函数,并且您不会调用其他构造函数,那么您的代码将不会编译它的可能副本将不会产生任何影响,因为对象类不会在默认构造函数中初始化任何内容super()是super关键字的一种特殊用法,您可以在其中调用无参数父构造函数。通常,super关键字可用于调用重写的方法、访问隐藏字段或调用超类的构造函数。在这种情况下,它将不起任何作用。仅供参考,每个类都隐式地从
对象扩展而来。任何有助于改进答案的附加信息都将受到重视。你对语义绝对性的坚持让我很恼火。我会的@Keppil。是的,我想笑话结束了。我选择了一个更微妙的选择@Keppil