java - 缺少方法主体,或声明抽象

标签 java netbeans

我收到此错误消息:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: Pet.saySomething at PetTest.main(PetTest.java:18) Java Result: 1

这是我所拥有的:对于Speak类,

public class Speak {
   public void saySomething();
}

这是我在 PetTest 类中的内容:

 import java.util.ArrayList;

 public class PetTest {

     public static void main(String[] args)
     {
         ArrayList<Pet> myPets = new ArrayList<Pet>();

         myPets.add(new Parrot("Boss"));
         myPets.add(new Cat("Oreo"));
         myPets.add(new Dog("Riley"));

         for (Pet p: myPets)
         {
             p.saySomething();
             System.out.println(p);
         }
     }
 }

我没有发布与该程序相关的其他 5 门类(class)。我知道 Speak 类中需要修复一些问题,但我被困住了。在 Speak 类中,在 public void saySomething(); 行中,它表示缺少方法主体,或声明抽象。

编辑:以下是其他类:

 public abstract class Pet {

     String name;

     public Pet(String name){
         this.name = name;
     }
 }

 public class Parrot extends Bird {

     public Parrot (String name)
     {
         super(name);
     }

     @Override
     public void saySomething()
     {
         System.out.println("Pauly want a craker?");
     }

     @Override
     public String toString()
     {
         return "Hello, I'm " + name + " the parrot.";
     }

 }


 public class Dog extends Pet {

     public Dog (String name)
     {
         super(name);
     }

     @Override
     public void saySomething()
     {
         System.out.println("Ruff, ruff!");
     }

     @Override
     public String toString()
     {
         return "Hello, I'm " + name + " the dog.";
     }
 }


 public class Cat extends Pet {

     public Cat(String name)
     {
         super(name);
     }

     @Override
     public void saySomething()
     {
    System.out.println("Meow.");
     }

     @Override
     public String toString()
     {
         return "Hello, I'm " + name + " the cat.";
     }
 }

 public class Bird extends Pet {

     public Bird(String name)
     {
         super(name);
     }

     public void saySomething(){}

 }

最佳答案

您有以下发言选项,请选择:

第一

public abstract class Speak{

   public abstract void saySomething();

}

第二

public class Speak{

   public void saySomething(){

   }
}

第三

public interface Speak{

   public void saySomething();
}

编辑:首先,您没有在任何地方使用 Speak 类。其次,请在Pet类中添加以下方法:

 public abstract void saySomething();

关于java - 缺少方法主体,或声明抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29293427/

相关文章:

java - android 将 3 个位图保存为 1 个

java - 如何使我的默认 JDK FX 启用?

php - 如何修复 PHP 中的 MySql 语法错误?

java - Netbeans JTextArea - 更改首选的可滚动视口(viewport)大小

java - 在 Java 中,你如何称呼这种模式/习惯用法?

java - 从堆中删除随机元素

Java,正则表达式 : Replace fields in Json by field key

java - 如何在父类中实现所有扩展类共有的单个ArrayList?

java - 如何从文本字段获取值并将其保存在整数数组中,稍后将其显示在标签中

java - Netbeans 中 GUI 组件的自定义 Bean 类