簡體   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