2013-11-22 38 views
0

我的子類中的顯示方法不起作用。它給出的錯誤: Customer.java:17:錯誤:找不到符號 super.display(); ^ 符號:方法顯示() 1錯誤要求或打印對象數據。繼承程序獲取編譯器錯誤58

import java.util.Scanner; 

public class Person 
{ 
private String name; 
private String address; 
private String number; 

public Person() //No Argument constructor// 
{ 
name= ""; 
address= ""; 
number= "" ; 
} 

public Person(String num, String nam, String add) //Explicit value constructor// 
{ 
    number= num; 
    name= nam; 
    address= add; 
} 
    public String getName() //Accessor method// 
    { 
    return name; 
    } 

    public void setName(String name)//Mutator method// 
    { 

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

回答

3

在這裏:

public class Customer extends Person { 
    String number=""; // you forgot the type declaration 

注意,在這個類的父類定義的number屬性是不可見的,因爲它是private。一個可能的解決辦法是聲明的屬性在保護類Person

protected String number; 

...但無論如何,你在Customer類做了(使用該構造函數),你不能對它們進行初始化。除此之外,超類已經初始化了它們。

+0

所以我不需要有String number =「」; – user3020052

+0

而是一個爲波林(我在這個新的請原諒我的誤解這麼多) – user3020052

0

另外,不聲明使用的是超級(號碼)number

類型;

但Person類沒有隻接受一個參數的構造函數。

所以你需要使用

super(num, nam, add); 

這也將否定需要具有Customer類申報number

所以基本上構建你需要做的

的overridenn 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; 
} 
+0

你能請請進一步解釋(對不起,這很新) – user3020052

+0

我這樣做,所以我也需要聲明「選擇「對於波林 – user3020052

+0

是的'choice'需要在某個地方聲明。 –

0

還有一個。

public boolean checkResponse(boolean response) 
    { 
    char response; 
    if (response == "Y") 

不會編譯。這些問題是:

  1. 你命名你的char變量一樣boolean變量
  2. 你試試吧
  3. 您使用==
把它比作一個要比較的字符串字符應答,而不初始化
+0

我編輯了程序,但是謝謝。我的顯示方法給我一個錯誤。 – user3020052