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