缺少方法体抽象类

时间:2015-02-06 12:03:18

标签: java methods 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);
    }
}

5 个答案:

答案 0 :(得分:3)

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

因此您需要创建方法abstract并确保在子类中实现它

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

阅读Oracle所说的内容。

另见:

答案 1 :(得分:1)

将课程定义为abstract只是意味着您无法对其进行实例化,并且您已经允许定义abstract方法。

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

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

答案 2 :(得分:0)

您必须定义正文,或者必须将其声明为abstract。如果你不想添加任何身体 - 改变

 void update(int waterLevel);} 

`abstract void update(int waterLevel);}`

答案 3 :(得分:0)

该方法也应该是抽象的:

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

未声明为abstract的方法必须由类实现,即使它位于抽象类中。

答案 4 :(得分:0)

我们需要在抽象类的情况下明确地告诉编译器它是一个抽象类。没有它将搜索body的关键字。它在接口的情况下很好,默认情况下都是抽象的。

abstract void update(int waterLevel);