缺少方法体,或声明抽象 [英] Missing Method body, or declare abstract

查看:4122
本文介绍了缺少方法体,或声明抽象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到此错误消息:


线程main中的异常java.lang.RuntimeException:无法编译的源代码 - 错误的sym类型:Pet.saySomething
at PetTest.main(PetTest.java:18)
Java结果:1


以下是我所拥有的:对于说出类,

  public class Speak {
public void saySomething();
}

以下是我在 PetTest中的内容 class:

  import java.util.ArrayList; 

公共类PetTest {

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

myPets.add(新鹦鹉(老板));
myPets.add(新猫(奥利奥));
myPets.add(new Dog(Riley));

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

我没有发布其他的与此计划一起使用的5个班级。我知道有一些东西需要在 Speak 类中修复,但我被卡住了。在 Speak 类中,在的行上显示public void saySomething(); 它表示Missing Method正文,或声明这是其他课程:



抽象类Pet {

String name;

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

公共类Parrot extends Bird {

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

@Override
public void saySomething()
{
System.out.println(Pauly想要一个craker?);
}

@Override
public String toString()
{
返回你好,我是+名字+鹦鹉。;
}

}


公共类Dog extends Pet {

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

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

@Override
public String toString()
{
返回Hello,I'm+ name +the dog。;
}
}


公共类Cat延伸宠物{

公共猫(字符串名称)
{
super(姓名);
}

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

@Override
public String toString()
{
返回Hello,I'm+ name +the cat。;
}
}

公共类Bird extends Pet {

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

public void saySomething(){}

}


解决方案

Speak有以下选择,请选择:



1st

  public abstract class Speak {

public abstract void saySomething();

}

2nd

  public class Speak {

public void saySomething(){

}
}

第3次

  public interface Speak {

public void saySomething();
}

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

  public abstract void saySomething(); 


I am getting this error message:

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

Here is what i have: for the Speak class,

public class Speak {
   public void saySomething();
}

Here is what i have in the PetTest class:

 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);
         }
     }
 }

I did not post the other 5 classes that go with this program. I know there is something that needs to be fixed in the Speak class, but i am stuck. In the Speak class, on the line that says public void saySomething(); it says Missing Method body, or declare abstract.

EDIT: Here are the other classes:

 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(){}

 }

解决方案

You have the following options for Speak, take your pick:

1st

public abstract class Speak{

   public abstract void saySomething();

}

2nd

public class Speak{

   public void saySomething(){

   }
}

3rd

public interface Speak{

   public void saySomething();
}

Edit: First of all, you are not using Speak class anywhere. Second, please add the following method in Pet class:

 public abstract void saySomething();

这篇关于缺少方法体,或声明抽象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆