2013-11-22 63 views
-1
Customer.java:17: error: cannot find symbol 
super.display(); 
    ^
symbol: method display() 

1 error 

這是編譯我的程序時發生的情況。如何在Customer子類中顯示對象數據?在Java中調用超級方法

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(); 
    } 
} 
+0

'super.display();'是問題所在。它不在超類。 – Santosh

+0

@Sandhu:請不要在您正在編輯的問題中添加更多內容。它混淆了實際代碼的意圖,並可能爲其他人解決提供紅鯡魚。 – Makoto

+0

@Makoto我剛剛格式化了代碼。就這樣。我沒有再添加任何東西。請在編輯歷史記錄中重新檢查我的編輯 –

回答

0

由於錯誤是想告訴你,super.display()不存在。

+0

如何使其相關換句話說我如何覆蓋tostring方法 – user3019552

3

爲了使super.display()正常工作,您需要在父類中使用名爲display()的方法。

由於您沒有這樣的方法,因此Java將不允許您編譯的代碼。

由於您似乎試圖在打印對象時顯示有關該對象的有用信息,爲何不重寫toString()?這裏需要注意的是,你沒有任何更有意義的信息來表明它是一個,它是一個Person(沒有Customer特定的字段,所以繼承關係是沒有意義的)。

你可能要考慮從Person增加更多的信息,以區分Customer然後覆蓋toString()

0

您沒有在父類(Pesron)中定義的display()函數;

1

發生此錯誤的原因是Person類中沒有display()方法。所以,你不能調用使用super.display()

所以在Customerdisplay()方法更改爲

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

所以我如何覆蓋toString方法在我的客戶類別 – user3019552

+0

查看編輯答案 –

+1

謝謝它編譯我剛剛省略** System.out.println(「客戶電話號碼:」+號碼); ** – user3019552

0

你可以簡單地訪問號碼,姓名或直接解決不存在的方法。修改display()方法,刪除super.display(),如下所示。在Java中

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

Super關鍵字相關的父類和Super.display()意味着你調用父class.Your父類的顯示方法的人,你正在擴展它public class Customer extends Person {

但沒有display()因此你的編譯錯誤