日期:2014-05-20  浏览次数:20776 次

代码疑问
package thirsty;
/*假如我们在开发一个系统时需要对员工进行建模,员工包含 3 个属性:姓名、工号以及工资。经理也是员工,除了含有员工
 * 的属性外,另为还有一个奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。
 * */
public class Test2 {
public static void main(String[] args) {
 //Manager manager=new Manager("zhang","JL01",5000,10000);

}



//(1)定义员工类属性
abstract class Employee
{
 private String name;
 private String id;
 private double salary;
 
 //(2)给员工类属性初始化
 Employee(String name,String id,double salary)
 {
  this.name = name;
  this.id = id;
  this.salary = salary;
 }
 
 //(5)此时思考问题:员工和经理都需要工作,但是他们做的事情是否一致呢?
 //1.普通员工和经理做的事情是有区别的,经理不是普通员工中的一种,
 //2.员工分为普通员工和经理,
 //3.这是对事物描述不具体,即是抽象的
 public abstract void work();
}
//(7)思考:如果对员工进行细分,可以分解出一个普通员工
//所以定义一个普通员工类继承员工类
class CommonPerson extends Employee
{
 CommonPerson(String name,String id,double salary)
 {
  super(name,id,salary);
 }
 //(8)因为普通员工也是公司中的一员,他也要工作,所以必须覆盖掉work()方法
 public void work()
 {
  System.out.println("commonperson work!");
 }
}
//(3)定义经理类
class Manager extends Employee
{
 private int bonus;
 //(4)给员工类属性初始化
 Manager(String name,String id,double salary,int bonus)
 {
  super(name,id,salary);//继承了父类Employee
  this.bonus = bonus;
 }
 //(6)因为经理也是公司中的一员,他也要工作,所以必须覆盖掉work()方法
 public void work()
 {
  System.out.println("manager work!");
 }
}
}

这段代码中 Manager manager=new Manager("zhang","JL01",5000,10000);这句话有问题请问该怎么解?

------解决方案--------------------
内部类实例化的问题:
Manager manager=new Manager("zhang","JL01",5000,10000);
改成
 Test2.Manager manager=new Test2().new Manager("zhang","JL01",5000,10000);
就ok了