abstract抽象类的应用

/*
* 示例:
* 需求:公司中程序员有姓名,工号,薪水,工作内容
* 项目经理有姓名,工号,薪水,奖金,工作内容
* 对给出需求进行数据建模
*
*
* 分析
* 在这个问题领域中,先给出涉及的对象
* 通过名词提炼发。
* 程序员:姓名,工号,薪水
* 行为:工作
* 项目经理:姓名,工号,薪水,奖金
* 行为:工作
*
* 经理与程序员不存在直接继承关系(经理不是程序员)
* 但程序员和经理有共性内容
* 可以将程序员和经理进行抽取,建立体系
*/
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;
    }

    public abstract void work();//行为是不同的,所以用到了抽象类对其进行向上抽取
}

class Programmer extends Employee//定义一个程序员类,它与经理的共性内容直接继承了雇员类中的内容
{
    Programmer(String name,String id, double pay)
    {
        super(name,id,pay);//通过super关键字直接对name,id,pay进行初始化
    }
    public void work()
    {
        System.out.println("code...");//程序员的行为
    }
}

class Manager extends Employee
{
    private int bonus;
    Manager(String name,String id,double pay,int bonus)
    {
        super(name,id,pay);//对name,id,pay进行初始化
        this.bonus = bonus;//对自己的特有内容,需要用this来进行初始化
    }

    public void work()
    {
        System.out.println("manage...");//经理的行为
    }
}

原文地址:https://www.cnblogs.com/sjbas/p/5354636.html