当前位置: 代码迷 >> J2SE >> 关于extends解决方案
  详细解决方案

关于extends解决方案

热度:81   发布时间:2016-04-23 19:54:59.0
关于extends
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类中只有无参构造函数,无法实例化父类 
  相关解决方案