您可以覆盖抽象超类中的方法,并在子类中将其定义为Java中的抽象方法吗?

时间:2018-10-16 17:43:48

标签: java oop override abstract-class

这听起来像是一个愚蠢的问题,但是我很长时间都在努力寻找自己的答案。那有可能吗?

例如:

public class SuperClass {
  public void methodToOverride(){
      System.out.println("Some text");
  }  
}

public class SubClass extends SuperClass{
  abstract void methodToOverride();
}

1 个答案:

答案 0 :(得分:1)

要使其正常工作,您只需要进行一些调整。首先,子类必须是抽象的,因此它可以具有抽象的方法。

第二,methodToOverride方法的可见性不能小于父方法的可见性,因此必须将其设置为公开。

然后它将按预期编译并运行。这是一个示例:

public class SuperClass {
    public void methodToOverride(){
        System.out.println("Some text");
    }
}

public abstract class SubClass extends SuperClass{
    public abstract void methodToOverride();
}

public class OtherClass extends SubClass {
    @Override
    public void methodToOverride() {
        // new logic
    }
}

话虽如此,这肯定是一个奇怪的模型...

希望有帮助!