小编典典

缺少方法主体,或声明了摘要

java

我收到此错误消息:

线程“主”中的异常java.lang.RuntimeException:无法编译的源代码-
错误的符号类型:PetTest.main(PetTest.java:18)上的Pet.saySomething Java结果: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个类。我知道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(){}

 }

阅读 286

收藏
2020-11-30

共1个答案

小编典典

您可以使用以下说话选项,请选择:

第一

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();
2020-11-30