缺少方法主体摘要 class

missing method body abstract class

摘要 class 的 'missing method body or declare abstract' 存在错误。但是 class WaterLevelObserver 已经是抽象的...我该如何解决这个错误?

abstract class WaterLevelObserver{
    void update(int waterLevel);
}

class SMSWriter extends WaterLevelObserver{
    void update(int waterLevel){
        System.out.println("Sending SMS.. : "+waterLevel);
    }
}

class Alarm extends WaterLevelObserver{
    void update(int waterLevel){
        if(waterLevel>=50){
            System.out.println("ON");
        }else{
            System.out.println("OFF");
        }
    }
}

class Display extends WaterLevelObserver{
    void update(int waterLevel){
        System.out.println("Water level.. : "+waterLevel);
    }
}

abstract class 中任何未实现的方法也应该是 abstract,

所以你需要制作你的方法 abstract 并确保你在你的 subclass

中实现它
  abstract class WaterLevelObserver{
      abstract void update(int waterLevel);
   }

阅读 Oracle 所说的内容。

另请参阅:

  • Should an abstract class have at least one abstract method?

要么必须定义正文,要么必须将其声明为 abstract。如果您不想添加任何正文 - 更改

 void update(int waterLevel);} 

`abstract void update(int waterLevel);}`

方法也应该是抽象的:

abstract class WaterLevelObserver
{
    void abstract update(int waterLevel);
}

未声明为 abstract 的方法必须由 class 实现,即使它在抽象 class.

将 class 定义为 abstract 仅意味着您无法实例化它并且您可以定义 abstract 方法。

任何未定义为 abstract 的方法都必须有主体。 TL;DR - 如果您不想实施 update,请将其定义为 abstract:

abstract class WaterLevelObserver{
    abstract void update(int waterLevel);
}

我们需要明确地告诉编译器它是一个抽象 class 在抽象 class.without 的情况下它将搜索主体的关键字。在接口的情况下很好,因为默认情况下都是抽象的。

抽象无效更新(int waterLevel);