繁体   English   中英

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

[英]ERROR: class not abstract and does not override abstract method

我在调试此代码时遇到困难。 我尝试了很多替代方法来消除错误,但是由于我是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();

    }
}

谢谢!

public abstract void speak();

您需要在Dog实现

你已经实现了什么

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

因此, Dog是抽象的,但是您没有指定它,也没有实现不带参数的 talk speak() 无论如何,请删除参数。

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

Abstract Speak方法的参数与实现的Dog.speak(String String)的参数不同。

您需要在Dog类中覆盖语音方法,将其更改为

public void speak()
{ 
   System.out.println("arf!"); 
}
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!");     }

 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM