2013-11-22 3 views
0

Мой метод отображения в моем подклассе не работает. Он дает ошибку: Customer.java:17: ошибка: не найден символ super.display(); ^ символ: метод отображения() 1 ошибка Требования или для печати данных объектов.Inheritance Program get compiler error 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

, поэтому мне не нужно иметь число строк = ""; – user3020052

+0

, но, скорее, один для boleen (я новичок в этом, пожалуйста, простите меня за недоразумение) – user3020052

0

Кроме того, чтобы не объявить тип number

вы используете супер (номер);

но класс Person не имеет конструктора, который принимает только один параметр.

Таким образом, вы должны использовать

super(num, nam, add); 

, который также будет отрицать необходимость того, чтобы объявить number в классе Customer

Так в основном построить 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

Я сделал это, поэтому мне также нужно было бы объявить «выбор» «для boleen – user3020052

+0

Да« выбор »должен быть объявлен где-то. –

0

Еще один.

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

, который не компилируется. Проблемы:

  1. Вы назвали переменную обугленного же, как и логического аргумента
  2. Вы пытаетесь сравнить обугленного ответ без ее инициализации
  3. Вы сравнить его в строку, используя ==
+0

Я отредактировал программу, но спасибо. Мой метод отображения дает мне ошибку. – user3020052