Java 从派生类调用超类:
当我为一个子类创建引用对象并试图输出引用对象时,我只从超类获得输出,它不会显示来自子类的任何内容。为什么? //超级类代码:Java 从派生类调用超类:,java,Java,当我为一个子类创建引用对象并试图输出引用对象时,我只从超类获得输出,它不会显示来自子类的任何内容。为什么? //超级类代码: public class Employee { private String name; private Date hireDate; public Employee() { name="no name yet"; hireDate=new Date("January",1,1000); }
public class Employee
{
private String name;
private Date hireDate;
public Employee()
{
name="no name yet";
hireDate=new Date("January",1,1000);
}
public Employee(String theName,Date theDate)
{
if(theName==null||theDate==null)
{
System.out.println("Error1");
System.exit(0);
}
else
name=theName;
hireDate=new Date(theDate);
}
public Employee(Employee originalObject)
{
name=originalObject.name;
hireDate=new Date(originalObject.hireDate);
}
public String getName()
{
return name;
}
public Date getHireDate()
{
return new Date(hireDate);
}
public void setName(String newName)
{
if(newName==null)
{
System.out.println("Error2");
System.exit(0);
}
else
name=newName;
}
public void setHireDate(Date newDate)
{
if(newDate==null)
{
System.out.println("Error3");
System.exit(0);
}
else
hireDate=new Date(newDate);
}
public String toString()
{
return(name+ " "+hireDate.toString());
}
public boolean equals(Employee otherEmployee)
{
return((name.equals(otherEmployee.name))&&(hireDate.equals(otherEmployee.hireDate)));
}
}
/////////////////////////////////////////////////////////////////////////
//sub class code:
public class SalariedEmployee extends Employee
{
private double salary; //annually
public SalariedEmployee()
{
super();
salary=0;
System.out.println("hi");
}
public static void main(String[]args)
{
SalariedEmployee s=new SalariedEmployee();
System.out.println(s);
}
}
//Thank u....
这使用对象的toString()方法。您还没有在子类中重写此方法,因此只看到超类实现的输出是正常的
例如,您可以在SalariedEmployee类中添加:
public String toString(){
return super.toString() + ",salary:" +salary;
}
你说子类没有显示是什么意思?上面的代码甚至不会编译
public String toString(){
return super.toString() + ",salary:" +salary;
}