package com.gao;
/* * 抽象类的应用 * * 公司里的所有人员都是员工 * 员工有分有等级 * 包括普通员工和经理 * 所有的员工都要工作 * Employee类是从普通员工和经理中抽取出来的一个类,里面含有它们的共有属性和方法 * 因为普通员工和经理所做的工作具体是什么在Employee类中无法描述,所以定义为抽象类 * 所以Employee类定义为抽象类 * */abstract class Employee// 向上抽取出来的员工类{ private String name;//员工姓名 private String id;//工号 private double pay;//工资 //get和set方法 public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public double getPay() { return pay; }
public void setPay(double pay) { this.pay = pay; }
public Employee(String name, String id, double pay) { // super(); this.name = name; this.id = id; this.pay = pay; }
public abstract void work();// 不确定不同类型的员工工作内容,所以使用抽象方法}
class Manager extends Employee// 经理{ private int bonus;
public int getBonus() { return bonus; }
public void setBonus(int bonus) { this.bonus = bonus; }
public Manager(String name, String id, double pay) { super(name, id, pay);//调用父类的构造函数 }
public Manager(String name, String id, double pay, int bonus) { super(name, id, pay);//调用父类的构造函数 this.bonus = bonus; }
@Override public void work()//复写父类中的抽象方法 { System.out.println("manager work"); }
}
class Pro extends Employee// 普通员工{
public Pro(String name, String id, double pay) { super(name, id, pay);//调用父类的构造函数 }
@Override public void work()//复写父类中的抽象方法 { System.out.println("pro work");
}}
public class AbstractTest{ public static void main(String[] args) { Pro p = new Pro("gao","c01",2500.0);//创建一个普通员工对象并初始化 System.out.println(p.getName());//输出:gao System.out.println("-----------------"); Manager m = new Manager("zhi", "m01", 8000.0,300);//创建一个经理对象并初始化 System.out.println(m.getName());//输出:zhi System.out.println(m.getBonus());//输出:300 }}
|
|