【问题标题】:Java error = is not abstract and does not override abstract methodJava 错误 = 不是抽象的,不会覆盖抽象方法
【发布时间】:2014-03-15 23:13:15
【问题描述】:

我有并且错误 Ikan 不是抽象的并且不会覆盖抽象 方法 setName 类 Ikan 扩展 Animal 实现 Pet 和 Kucing 是 非抽象且不覆盖抽象方法 setName 类 Kucing 扩展了 Animal 的 Pet

abstract class Animal {
    protected int Legs;
    protected String Eater;
    Animal (int l,String e) {
        Legs = l;
        Eater = e;
    }
    abstract public void walk ();
    abstract public void eat ();
    int getLegs () {
        return Legs;
    }
    String getEater () {
        return Eater;
    }
}

interface Pet {
    void setName();
    String getName();
    void balikNama();
    void play();
}

class Ikan extends Animal implements Pet {
    String name,mainan;
    Ikan (int l,String e) {
        super(l,e);
    }
    void setMainan (String m) {
        mainan = m;
    }
    void getMainan () {
        System.out.println ("Ikan ini bermain"+mainan);
    }
    public void setName (String n) {
        name = n;
    }
    public String getName () {
        return name;
    }
    public void balikNama () {
        for (String part : name.split(" ")) {
            System.out.print(new StringBuilder(part).reverse().toString());
            System.out.print(" ");
        }
    }
    public void play () {
        System.out.println (name+" lagi mainan "+mainan);
    }
    public void walk () {
        System.out.println ("Tidak bisa berjalan bisanya renang");
    }
    public void eat () {
        System.out.println ("Hewan ini memakan "+Eater);
    }
}

class Kucing extends Animal implements Pet {
    String name,mainan;
    Kucing (int l,String e) {
        super(l,e);
    }
    void setMainan (String m) {
        mainan = m;
    }
    void getMainan () {
        System.out.println ("Kucing ini bermain"+mainan);
    }
    public void setName (String n) {
        name = n;
    }
    public String getName () {
        return name;
    }
    public void balikNama () {
        for (String part : name.split(" ")) {
            System.out.print(new StringBuilder(part).reverse().toString());
            System.out.print(" ");
        }
    }
    public void play () {
        System.out.println (name+" lagi mainan "+mainan);
    }
    public void walk () {
        System.out.println ("Berjalan dengan "+Legs+" kaki");
    }
    public void eat () {
        System.out.println ("Hewan ini memakan "+Eater);
    }
}

class Laba extends Animal {
    String name;
    Laba (int l,String e) {
        super(l,e);
    }
    void setName (String n) {
        name = n;
    }
    public String getName () {
        return name;
    }
    public void balikNama () {
        for (String part : name.split(" ")) {
            System.out.println(new StringBuilder(part).reverse().toString());
        }
    }
    public void walk () {
        System.out.println ("Berjalan dengan "+Legs+" kaki");
    }
    public void racun () {
        System.out.println ("Cuma sedikit racunya");
    }
    public void eat () {
        System.out.println ("Hewan ini memakan "+Eater);
    }
}

class Tarantula extends Laba{
    String name;
    Tarantula (int l,String e,String n) {
        super(l,e);
        name = n;
    }
    void setName (String n) {
        name = n;
    }
    public String getName () {
        return name;
    }
    public void balikNama () {
        for (String part : name.split(" ")) {
            System.out.println(new StringBuilder(part).reverse().toString());
        }
    }
    public void walk () {
        System.out.println ("Berjalan dengan "+Legs+" kaki");
    }
    public void racun () {
        System.out.println ("Banyak racunya");
    }

}

class TestAnimal {
    public static void main (String[]args) {
        Ikan I = new Ikan (0,"Manusia");
        Kucing K = new Kucing (4,"Ikan");
        Laba L = new Laba (6,"Kucing");
        Tarantula T = new Tarantula (6,"Burung","Joni");
        I.setName ("Piranha");
        K.setName ("Tiger");
        L.setName ("Spiderman");
        I.setMainan ("Ikan lainnya");
        K.setMainan ("Burung");
        Animal [] A = new Animal [4];
        A[0] = I;
        A[1] = K;
        A[2] = L;
        A[3] = T;
        for (int i = 0;i < 4;i++) {
            if (A[i] instanceof Laba) {
                System.out.println ("Ini bukan hewan peliharaan bro");
                System.out.print ("Laba laba ini bernama "+A[i].getName());
                A[i].balikNama();
                A[i].walk();
                A[i].racun();
                A[i].eat();
            } else {
                A[i].getName();
                A[i].balikNama();
                A[i].walk();
                A[i].eat();
                A[i].getMainan();
            }
        }
    }
}

【问题讨论】:

  • 你对错误信息有什么不明白的地方?
  • 我不知道如何解决它,请帮助我

标签: java arrays interface abstract


【解决方案1】:

Pet 接口声明setName 不应带参数。这是不正确的;该方法旨在采用一个String 代表新名称。

改成

void setName(String name);

Java 会看到它已经实现。

【讨论】:

  • 它的工作,然后我有错误 TestAnimal.java:167: cannot find symbol System.out.print ("Laba laba ini bernama "+A[i].getName()) Symbol : method getName() 位置:动物类
  • @user3424447:尝试自己调试这个。你会遇到更多的错误,如果你不停地对每个错误都立即询问 StackOverflow,你就不会学会调试。
  • 好的,非常感谢,但是在30个错误之后,现在只剩下6个错误,我仍然困惑如何将方法从接口放入对象抽象数组中的数组
【解决方案2】:

Ikan 和 Kucing 类没有实现继承的抽象方法 Pet.setName()

将接口改为Pet.setName(String name)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2014-06-20
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多