算是作个备忘吧。
关于Java的继承,我总共写错了二次:
第一次是,在写继承的时候,忘了调用父类的构造器,其实挺好写的,就直接用super即可。
第二次,测试时,在设置manager的额外收益时,应该这样实例化:
Manager manager=new Manager(“xxx”,50000,2001,2,14);
而不是
Employee manager=new Manager(“xxx”,50000,2001,2,14);
关于为什么是这样,第一种我懂,但第二种我不懂,虽然错误,但我不知道为什么错误。我记得以前写程序的时候出现过声明和new不一样的情况。至于为什么,我想下次懂的时候,补上。
下现贴代码:
首先是父类,也就是超类:
import java.util.Date;
import java.util.GregorianCalendar;
public class Employee {
private String name;
private double salary;
private Date hireday;
public Employee(String aName, double aSalary, int year,int month,int day)
{
this.name=aName;
this.salary=aSalary;
GregorianCalendar calendar=new GregorianCalendar(year,month-1,day);
this.hireday=calendar.getTime();
}
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public void raiseSalary(double byPercent)
{
salary+=salary*byPercent/100;
}
public Date getHireday()
{
return hireday;
}
}
然后是子类
package test3;
public class Manager extends Employee{
public Manager(String aName, double aSalary, int year, int month, int day) {
super(aName, aSalary, year, month, day);
// TODO Auto-generated constructor stub
}
private double bonus;
public void setBonus(double b)
{
bonus=b;
}
public double getSalary()
{
return super.getSalary()+bonus;
}
}