gpt4 book ai didi

java:关于重写方法的继承问题

转载 作者:行者123 更新时间:2023-11-29 08:30:31 27 4
gpt4 key购买 nike

如果父类中的方法不需要参数,但子类中的覆盖方法需要参数。在父类的方法中使用 no use 参数是一种好习惯吗?

//in parent class:
getFeature(String name){
return defaultFeature;
}

//in child class:
getFeature(String name){
return new Feature(name);
}

此方法仅在父类的另一个方法中使用。所以我们对父类和子类有相同的签名。真正的问题是两个子类的 getFeature 实现略有不同。

或者是否有更好的方法来实现这一点?

最佳答案

Is it good practice to have a no use argument in the method in parent class?

这取决于。如果 API 设计预期子类将需要该参数,即使基类不需要,并且您希望确保可以通过父类型引用调用该方法的参数版本:

Parent instance = new Subclass();
Feature f = instance.getFeature("foo");

...那么即使您没有在实现中使用它,您也必须在父类签名中包含该参数。您可能拥有始终提供非参数功能的无参数版本:

class Parent {
public Feature getFeature() { // Maybe you'd want this, maybe not
return defaultFeature;
}
public Feature getFeature(String name) {
return this.getFeature();
}
}
class Subclass extends Parent {
@Override
public Feature getFeature(String name) {
return /*...*/;
}
}

但是如果您预计子类实例将仅与子类类型的引用一起使用:

Subclass instance = new Subclass();
// ^^---------- note
Feature f = instance.getFeature("foo");

...那么父类的getFeature就没有理由拥有它。子类可以将其添加为重载:

class Parent {
public Feature getFeature() {
return defaultFeature;
}
}
class Subclass extends Parent {
public Feature getFeature(String name) {
return /*...*/;
}
}

这只是意味着 Parent 类型的引用将被限制为 getFeature 的无参数特性。

关于java:关于重写方法的继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48689696/

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