错误:类不是抽象的,不会覆盖抽象方法

时间:2014-11-05 16:23:08

标签: java

我在调试此代码时遇到了困难。我已经尝试了很多替代方法来摆脱错误,但我似乎无法指出什么是错误的,因为我是Java的新手。

public abstract class Animal {

    private String name;    
    private String type;

    public Animal(String name, String type) {       
       this.name = name;
       this.type = type;    
    }       

   public String getName() {        
        return this.name;
   }

   public String getType() {        
       return this.type;    
   }        

   public abstract void speak();

 }



public class Dog extends Animal{


    public String getName() {
        return super.getName();     }

    public String getType() {       
       return super.getType();  }

    public void speak(String name, String type){
        System.out.println("arf!");     }

    }


public class Ark{
    static void main(String[] args){

        Dog cookie = new Dog();         
        cookie.speak();

    }
}

谢谢!

4 个答案:

答案 0 :(得分:2)

public abstract void speak();

您需要在Dog

中实现此功能

您已实施的内容

public void speak(String name, String type)
{ System.out.println("arf!"); }

因此Dog是抽象的,但您尚未指定,除非您实施了speak() 没有参数。删除参数,无论如何你没有使用它们。

@Override
public void speak()
{ System.out.println("arf!"); }

答案 1 :(得分:0)

抽象语音方法与您实现的Dog.speak(String String)具有相同的参数。

答案 2 :(得分:0)

您需要覆盖Dog类中的speak方法,将其更改为

public void speak()
{ 
   System.out.println("arf!"); 
}

答案 3 :(得分:0)

public abstract class Animal {

    private String name;    
   private String type;

    public Animal(String name, String type) {       
       this.name = name;
        this.type = type;   }       

   public String getName() {        
        return
        this.name;  }

    public String getType() {       
         return this.type;  }       

   public abstract void speak(String name, String type);    
 // if you want parameters in the Dog class for this method you must include them here otherwise it wont work
}



 public class Dog extends Animal{


    public String getName() {
        return super.getName();     }

    public String getType() {       
       return super.getType();  }

    public void speak(String name, String type){
        System.out.println("arf!");     }

 }