需求:
程序员:姓名、工号、薪水、行为:工作内容
项目经理:姓名、工号、薪水、奖金、行为:工作内容
分析:程序员和项目经理的属性:姓名、工号、薪水一致,方法:工作内容
发现:由于工作内容没有办法具体描述,就只能进行抽象提取方法,再让程序员和经理单独描述
(1)程序员和员工可以归纳为一类:员工staff
public abstract class Staff{
// 属性
String name;
int jobnumber;
double salary;
// 构造方法(实例化对象传入参数)
Staff(String name,int jobnumber,double salary){
this.name=name;
this.jobnumber=jobnumber;
this.salary=salary;
}
// 建立一个抽象的工作内容方法
public abstract void work();
}
(2)程序员
public class Programmer extends Staff{
// 构造方法
Programmer(String name,int number,double salary){
super(name,number,salary);
}
// 方法的重写
public void work() {
System.out.println("姓名:"+name+"\t工号:"+number+"\t薪水:"+salary);
System.out.println("努力写高质量的代码");
}
}
(3)项目经理
public class Manner extends Staff{
double bouns;
// 构造方法
Manner(String name,int number,double salary,double bouns){
super(name,number,salary);
this.bouns=bouns;
}
// 方法的重写
public void work() {
System.out.println("姓名:"+name+"\t工号:"+number+"\t薪水:"+salary+"\t奖金:"+bouns);
System.out.println("管理。。。。。");
}
}
(4)员工测试(Staff-Test)
public class Staff_test {
public static void main(String[] args) {
Manner m=new Manner("老王",712321,10000,1000);
m.work();
Programmer p=new Programmer("小花",745340,6600);
p.work();
}
}
本篇综合地应用了super、this、抽象类的运用,需多加揣摩。