在Java中调用超级方法

时间:2013-11-22 04:08:55

标签: java

Customer.java:17: error: cannot find symbol
super.display();
      ^
symbol: method display()

1 error

这是我编译程序时发生的事情。如何在Customer子类中显示对象数据?

import java.util.Scanner;

public class Person {

    private String name;
    private String address;
    private String number;

    //No Argument constructor//
    public Person() {
        name = "";
        address = "";
        number = "";
    }

    //Explicit value constructor//
    public Person(String num, String nam, String add) {
        number = num;
        name = nam;
        address = add;
    }

    //Accessor method//
    public String getName() {
        return name;
    }

    //Mutator method//
    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getTelephoneNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String toString() {
        return name + "\n" + address + "\n" + number;
    }
}

子类:

public class Customer extends Person {

    public Customer(String num, String nam, String add) {
        super(num, nam, add);
    }

    public boolean checkResponse(char response) {
        if (response == 'Y') {
            return true;
        }
        return false;
    }

    public void display() {
        super.display();
    }
}

6 个答案:

答案 0 :(得分:3)

要使super.display()生效,您需要在父类中使用名为display()的方法。

由于您没有这样的方法,Java将不允许您编译的代码。

由于您似乎在尝试在打印时显示有关对象的有用信息,为什么不再次覆盖toString()?这里需要注意的是,您没有任何更有意义的信息来表明它是Customer而不是Person(没有Customer特定字段,所以继承关系是没有实际意义的。

您可以考虑添加更多信息,以区分CustomerPerson然后覆盖toString()

答案 1 :(得分:1)

发生错误是因为display()类中没有Person方法。因此,您无法使用super.display()

调用不存在的方法

因此,将display()中的Customer方法更改为

   public void display() {
        System.out.println(super.toString());
   }

答案 2 :(得分:0)

由于错误试图告诉您,super.display()不存在。

答案 3 :(得分:0)

您没有在父类(Pesron)中定义的display()函数;

答案 4 :(得分:0)

您可以直接访问号码,姓名或地址。修改display()方法,删除super.display(),如下所示。

public void display()
{
  System.out.println("Customer telephone number:" + number);
}

答案 5 :(得分:0)

java中的

Super关键字与父类相关,Super.display()表示您正在调用父类的显示方法。当您扩展父类时,父类是人public class Customer extends Person { < / p>

但是没有display(),因此你的编译错误