[英]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.