我的子类中的显示方法不起作用。它给出了错误: 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();
}
}
答案 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")
不会编译。问题是: