继承程序获取编译器错误58

时间:2013-11-22 02:19:02

标签: java inheritance

我的子类中的显示方法不起作用。它给出了错误: Customer.java:17:错误:找不到符号  super.display();       ^   符号:方法显示() 1错误要求或打印对象数据。

 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 个答案:

答案 0 :(得分:3)

在这里:

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

请注意,超类中声明的number属性在此类中不可见,因为它是private。一种可能的解决方案是在类Person中将属性声明为受保护:

protected String number;

...但无论如何你不能像在课堂Customer中那样初始化它们(使用构造函数)。除了它是不必要的,超类已经初始化了它们。

答案 1 :(得分: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; 
}

答案 2 :(得分:0)

再一次。

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

不会编译。问题是:

  1. 您将char变量命名为与boolean参数
  2. 相同
  3. 您尝试比较char响应而不进行初始化
  4. 您可以使用==
  5. 将其与字符串进行比较