javac <options> <source files> 为什么出现这种情况

hello world什么的都能正常编译
偶尔会出现这种问题javac
是因为一个JAVA中的几个类吗?
不懂 望指教!!!!
lass Test989
{
public static void main(String[] args)
{
Programmer liang = new Programmer();
liang.name = "旺财";
liang.id = "Gtr001";
liang.pay = 2630.22;
liang.work();
}
}
abstract class Employee
{
private String name;
private String id;
private double pay;
Employee(String name,String id,double pay)
{
this.name = name;
this.id = id;
this.pay = pay;
}
abstract void work();
}

class Programmer extends Employee
{
Programmer(String name,String id,double pay)
{
super();
}
void work()
{
System.out.println(name+"_"+id+"_"+pay+":"+"code");
}
}
class Manager extends Employee
{
Manager(String name,String id,double pay,int bonus)
{
super();
this.bonus = bonus;
}
void work()
{
System.out.println(name+"_"+id+"_"+pay+bonus+":"+"manage");
}
}

每一个类都有一个隐含的没有任何参数的构造函数,比如Employee(),但是只要自定义了任意一个构造函数,这个隐含的构造函数就失效了。
你的定义的三个类EmployeeProgrammerManager,都自己定义好了构造函数,比如Employee(String name, String id, double pay),此时你再在Test989类的main函数中调用Employee()显然是不可以的,编译报错,错误信息The constructor Programmer() is undefined

解决办法:
AEmployeeProgrammerManager中都显式定义无参构造函数;
B 所有调用构造函数的地方都需要添加三个参数,包括super()