[英]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
特异的领域,所以继承关系是没有实际意义)。
您可能需要考虑添加更多信息,以区分Customer
和Person
, 然后重写toString()
。
发生错误是因为Person
类中没有display()
方法。 因此,您不能使用super.display()
调用不存在的方法
因此,将Customer
的display()
方法更改为
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.