Java在扩展类中将非抽象方法重写为抽象方法

Java在扩展类中将非抽象方法重写为抽象方法,java,overriding,abstract,Java,Overriding,Abstract,所以我在基类中有一个非抽象方法。 在扩展的MyTask中将其抽象化是否可以接受?其目的是强制onStop由扩展MyTask的类实现 public abstract class Task { public void onStop() { } } 实施: public abstract class MyTask extends Task { //.. // Is this acceptable? public abstract void onS

所以我在基类中有一个非抽象方法。 在扩展的MyTask中将其抽象化是否可以接受?其目的是强制onStop由扩展MyTask的类实现

public abstract class Task {

    public void onStop() {
    
    }
}
实施:

public abstract class MyTask extends Task {
    //..

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

如果
MyTask
也是
abstract
,则允许这样做。它迫使
MyTask
的所有具体子类提供它们自己的
onStop()
实现,而不是使用基本
Task
类的
onStop()
实现。

如果
MyTask
是抽象的,那么是的。你所说的“可接受”是什么意思?如果你想知道上面的内容是否可以编译,那么答案是肯定的(至少现在你已经把
MyTask
抽象化了),但是你可以通过尝试很容易地找到答案。@Slaw As in acceptable我的意思是这是否是一个好的做法?我个人从来没有见过这样做,但这本身并不意味着什么。不过我看不出有什么问题(除了一个小小的违反最小惊喜的行为)。