gpt4 book ai didi

java - 我在这里使用父类(super class)构造函数调用是否有必要?

转载 作者:行者123 更新时间:2023-12-01 06:34:31 25 4
gpt4 key购买 nike

我对 Java 还很陌生,并且仍在练习面向对象设计和编程的基础知识。我有一些关于继承、对象创建以及 super() 调用的正确用法的问题。

请考虑以下事项:

父类(super class),

package pet

public class Dog {

private String foodDogEats;

public Dog() {
this.foodDogEats;
}

public String getDogFood() {
return foodDogEats;
}

public void setDogFood() {
foodDogEats = "kibble";
}

}

子类,

package pet

public class Fido extends Dog {

public Fido() {
super();
Dog dog = New Dog();
this.whatDoesFidoEat();
}

public whatDoesFidoEat(Dog dog) {
System.out.println("Fido eats " + dog.getDogFood());
}

}

和 Controller 。

package pet

public class MyDogFido {

public void MyDogFido() {
Fido fido = new Fido();
}

}

此示例中的对象是实例化一个新的 Fido 对象,并在此过程中执行 whatDoesFidoEat() 中的打印行为。我有几个问题 -

由于我已经调用了一个新的 Fido 对象(它是 Dog 的扩展,如果我没记错的话继承了它的方法和变量),因此是一个Fido() 构造函数中的新 Dog 对象多余吗?

如何使用super()

哪一个是正确的行为 - 在 Fido() 中实例化 Dog 对象、调用 super() 或两者都执行?

我最初在控制类中使用两者编写了一些类似的代码。不过,写完这个问题后,我的直觉告诉我应该只调用 super()

也请随意评论我的示例代码(特别是 Dog() 构造函数中的 this.foodDogEats; 行 - 也不确定那里的用法)。

谢谢!

最佳答案

您是对的,Dog dog = new Dog(); 行是多余的。它将创建第二个完全独立的 Dog 对象。

super() 调用也是不必要的。所有 Java 构造函数都会隐式调用 super(),除非您通过调用不同的 super 构造函数来覆盖该行为。

关于java - 我在这里使用父类(super class)构造函数调用是否有必要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38466049/

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