gpt4 book ai didi

java 。扩展 Object 的类中的 super 调用

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:16 25 4
gpt4 key购买 nike

我经常看到这样的代码:

class MyClass{
private int a;
public MyClass(int a){
super(); //what is the purpose of this method call?
this.a = a;
}
//other class methods here
}

如果类扩展对象,则 super() 调用将调用对象构造函数,据我所知,该构造函数不执行任何操作。那为什么需要调用super()呢?我对这种特殊情况感兴趣,当 super() 不执行任何操作时,因为它只调用 Object()。

最佳答案

首先,我建议阅读源代码 - documentation.然后引用 jb-nizetanswer :

Note that this explicit call is unnecessary since the compiler would add it for you. You only need to add a super() call in a constructor when you want to invoke a superclass constructor with arguments.

在Java中,super指的是父类。我们可以通过两种方式使用它:

super() 正在调用父类的构造函数。 super.toString() 将调用父类的 toString 方法的实现。

在您的示例中:

class MyClass{
private int a;
public MyClass(int a){
super(); //what purpose of this?
this.a = a;
}
//other class methods here
}

它调用了Object的构造函数,该构造函数是空白的,所以这只是迂腐的,但如果我们修改它:

class Foo extends Bar{
private int a;
public Foo(int a){
super(); //what purpose of this?
this.a = a;
}
//other class methods here
}

它代表首先调用Bar的构造函数。

我之前描述的另一个用法是:

class Bar {
public String toString() {
return "bar";
}
}

class Foo extends Bar{
String foo = "foo";
public Foo(){
super(); //what purpose of this?
}
public String toString() {
super.toString()
}

将导致返回“bar”。

关于 java 。扩展 Object 的类中的 super 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41085161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com