Java在扩展类中将非抽象方法覆盖为抽象方法

huangapple go评论69阅读模式
英文:

Java override non abstract method as abstract in extended class

问题

是的,可以将在扩展的MyTask类中的onStop方法改为抽象方法,以强制要求扩展MyTask的类来实现onStop方法。以下是代码的翻译:

public abstract class Task {

    public void onStop() {
    
    }
}

实现

public abstract class MyTask extends Task {
    //..

    // 这是可以接受的吗?
    public abstract void onStop();
}
英文:

So I have a non-abstract method onStop inside the base class.
Is it acceptable to make it abstract in the extented MyTask? The aim is to force the onStop to be implemented by classes that extend the MyTask.

public abstract class Task {

    public void onStop() {
	
    }
}

Implementation:

public abstract class MyTask extends Task {
    //..

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

答案1

得分: 3

以下是翻译好的部分:

如果 MyTask 也是 abstract,那么允许这样做。这会强制 MyTask 的所有具体子类提供自己的 onStop() 实现,而不是使用基础 Task 类的 onStop() 实现。

英文:

It's allowed to do that if MyTask is also abstract. It forces all the concrete sub-classes of MyTask to supply their own implementation of onStop() instead of using the onStop() implementation of the base Task class.

huangapple
  • 本文由 发表于 2020年8月11日 14:40:09
  • 转载请务必保留本文链接:https://go.coder-hub.com/63352790.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定