繁体   English   中英

用Java调用超级方法

[英]Calling a super method in 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();
    }
}

为了使super.display()起作用,您需要在父类中使用一个名为display()的方法。

由于您没有这种方法,因此Java将不允许您编译代码。

既然您似乎在尝试打印有关该对象的有用信息,那么为什么不再次覆盖toString()呢? 这里需要说明的是,你没有任何更有意义的信息,以显示它是一个Customer在它是一个Person (有没有Customer特异的领域,所以继承关系是没有实际意义)。

您可能需要考虑添加更多信息,以区分CustomerPerson然后重写toString()

发生错误是因为Person类中没有display()方法。 因此,您不能使用super.display()调用不存在的方法

因此,将Customerdisplay()方法更改为

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

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

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

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

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

Super Java中的关键字是与父类和Super.display()方法你调用父class.Your父类的显示方法的人,你正在扩展它public class Customer extends Person {

但是没有亲自display() ,因此您得到编译错误

暂无
暂无

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

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