首页 > 解决方案 > 子类可以覆盖一个具体方法并将其声明为抽象吗?

问题描述

这不会产生编译时错误。所以这可以被认为是一种覆盖?

public class ClassA{

       public void metod(){
       }
}

public abstract class ClassB extends ClassA{

      @Override
      public abstract void metod();
}

标签: inheritanceoverridingabstract

解决方案


是的!

子类可以覆盖具体方法并将其声明为抽象的。但是,子类现在是抽象的(因为它至少有一个抽象方法),子类不能再次实例化。它需要再次被继承才能发挥更大的作用。反过来,它的子类将重新实现metod这个最新子类可实例化的方法。


推荐阅读