Java继承类中将非抽象方法重写为抽象方法

3

我在基类中有一个非抽象方法onStop。在扩展的MyTask中将其变为抽象方法是否可行?目的是强制要求扩展MyTask的类实现onStop方法。

public abstract class Task {

    public void onStop() {
    
    }
}

实现:

public abstract class MyTask extends Task {
    //..

    // Is this acceptable?
    public abstract void onStop();
}

2
如果MyTask抽象的,那么是的。 - ernest_k
“可接受”是什么意思?如果你想知道上面的代码是否能编译通过,那么答案是肯定的(至少现在你已经将“MyTask”声明为抽象类),但是你可以通过自己尝试来轻松地弄清楚这一点。 - Slaw
@Slaw 我的意思是,这是一个好的做法吗? - Indrz
我个人从未见过这样的做法,但这本身并不意味着什么。我认为这样做没有任何问题(除了可能会违反最小惊讶原则)。 - Slaw
1个回答

3
如果MyTask也是abstract的话,就可以这样做。这会强制所有MyTask的具体子类提供它们自己的onStop()实现,而不是使用基本Task类的onStop()实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接