【发布时间】:2018-11-19 19:37:12
【问题描述】:
可能是一个非常菜鸟的问题,但我无法弄清楚。我有一个 Person 类来存储从键盘输入的名称
public class Person {
private String firstName;
private String lastName;
public Person()
{
firstName = "";
lastName = "";
}
public Person(String first, String last)
{
setName(first, last);
}
public String toString()
{
return(firstName + " " + lastName);
}
public void setName(String first, String last)
{
firstName = first;
lastName = last;
}
public String getFirstName()
{
return firstName;
}
public String getLastName()
{
return lastName;
}
}
我正在尝试在名为 Patient 的子类中调用 toString 方法
public class Patient extends Person {
private int patientID, patientAge;
public Patient()
{
patientID = 0; //for a different part of the class that works
patientAge = 0;
}
@Override
public String toString()
{
return ("Patient Name: "+super.toString());
}
}
当我从 Patient 类调用 toString 方法时,我无法让它在 main 中输出名称,但是当我测试它时,当我从 Person 类调用 toString 方法时它会输出名称。
main 中的方法调用看起来像 Patient pnt = new Patient(); System.out.print(Pnt.toString());
它在控制台“Patient Name:”中打印出来。关于我做错了什么的任何反馈或关于如何让它发挥作用的想法
【问题讨论】:
-
你是如何构建你的
Patient对象的?名字和姓氏似乎没有设置。 -
请发表您的主要方法
-
只是为了记录,因为新手经常忘记这一点:请不要忘记在某个时候接受答案!
-
问题是你没有设置名字。现在已经在 cmets 上提出了解决方案。要么使用你的设置器或伸缩构造函数,并在你的主类或子类构造函数中设置名称。还要记住,setter 是继承的,所以你可以构造一个病人,使用 setter 作为名称并打印它
标签: java subclass superclass