import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class EmployeeTest {
public static void main(String[] args) {
Employee[] staff = new Employee[3];
staff[0] = new Employee("Carl Cracker",75000,1987,12,15);
staff[1] = new Employee("Harry Hacker",50000,1989,10,1);
staff[2] = new Employee("Tony Tester",40000,1990,3,15);
for(Employee e:staff)
{
e.raiseSalary(5);
}
for(Employee e:staff)
{
System.out.println("name="+e.getName()+",salary="+e.getSalary()+",hireDay="+e.getHireDay());
}
}
}
class Employee{
public Employee(String n,double s,int year, int month,int day)
{
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year,month-1,day);
hireDay = calendar.getTime();
}
public String getName()
{
return name ;
}
public double getSalary()
{
return salary;
}
public Date getHireDay()
{
return hireDay;
}
public void raiseSalary(double byPercent)
{
double raise =salary*byPercent/100;
salary +=raise;
}
private String name;
private double salary;
private Date hireDay;
}
class Manager extends Employee{
}
显示"Implicit super constructor Employee() is undefined for default constructor. Must define an explicit constructor"
不懂为什么
------解决思路----------------------
父类构造函数带参数,没有无参构造函数;你目前程序写的状态Manager类中只有Manager()无参构造函数,无法实例化父类
------解决思路----------------------
1、子类实例化会引起父类的实例化,由于你在子类中没有声明,默认调用super();即父类的无参构造函数
2、一个对象如果声明了有参构造函数,则不会再为你生成默认的无参构造函数,需要自己显式的写一个无参构造函数
------解决思路----------------------
父类中只有个一个含参数构造方法,把无参数构造方法覆盖了。所以子类必须重写含参数的构造方法。目前程序写的状态Manager类中只有无参构造函数,无法实例化父类