gpt4 book ai didi

java - 仅调用 'super' 实现时进行覆盖是否有意义?

转载 作者:行者123 更新时间:2023-12-02 06:20:40 26 4
gpt4 key购买 nike

这是一个关于 Java 编程世界的好奇问题。

假设我的代码中有这个

public interface IDoSomethingAndSomethingElse {

int doSomething();

int doSomethingElse();

}


public abstract class AbstractDoSomethingAndSomethingElse implements IDoSomethingAndSomethingElse{

public int doSomething() {
return arcaneAndMysticalProceedings();
}

public abstract int doSomethingElse(); //thanks PM77-1
}

public class MyDoSomethingAndSomethingElse extends AbstractDoSomethingAndSomethingElse{

@Override
public int doSomething(){
return super.doSomething();
}

public int doSomethingElse(){
return mystiriousIncantation();
}

}

我的问题是:具体实现中是否有一点像这样重写 doSomething() ?有什么用吗?您能想出一个有用的用例吗?

编辑:为了让我的问题更精确;在某些情况下,如果我没有像上面那样执行 ovveriden doSomething (实际上没有添加任何内容),结果会有所不同吗?

最佳答案

不,没有功能差异。

我能想到的唯一区别是,如果不重写它,该方法不会在该类上“声明”,而只会在父类(super class)上“声明”。例如:

class A {
void doSomething() {
}

static class B extends A {
@Override
void doSomething() {
super.doSomething();
}
}

static class C extends A {
}

public static void main(String[] args) {
for(Method m : B.class.getDeclaredMethods())
System.out.println(m.getName());
for(Method m : C.class.getDeclaredMethods())
System.out.println(m.getName());
}
}

在该示例中,仅针对 B.class 列出了 doSomething

关于java - 仅调用 'super' 实现时进行覆盖是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21058015/

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