【案例介绍】
1. 案例描述
某公司的人员分为员工和经理两种,但经理也属于员工中的一种,公司的人员都有自己的姓名和地址,员工和经理都有自己的工号、工资、工龄等属性,但经理不同员工的是,经理有自己在公司对应的级别。假设每次给员工涨工资一次能涨10%,经理能涨20%。本案例要求利用多态实现给员工和经理涨工资。
2. 运行结果
姓名:张三,地址:编程村,工龄:2,工号:12,级别:B,工资:1100.0
姓名:李四,地址:外太空,工龄:10,工号:123,级别:A,工资:12000.0
【案例目标】
l 学会利用继承特性实现“经理与员工工资案例”的实现思路。
l 独立完成“经理与员工工资案例”的源代码编写、编译及运行。
l 掌握多态的概念及其应用。
l 掌握方法的重载的概念及其应用。
【案例分析】
(1)创建父类Person类,在Person类中定义name和address属性,并定义该类的构造方法。
(2)创建抽象类Employee类并继承Person类,创建构造方法,在构造方法中调用父类的构造方法。在Employee类中定义员工的ID、工资wage、年龄age等属性;在类中定义涨工资的抽象方法add(),通过对职位的判断来给员工或经理涨工资。
(3)创建子类Manager类并继承Employee类;创建构造方法,在构造方法中调用父类的构造方法;由于经理有两种身份,既是Employee又是Manager,所以Manager类继承Employee类,在Manager类中定义等级属性level,并给出level的getter和setter方法;实现Employee类的add()抽象方法。
(4)创建测试类,对Manager进行实例化,传入参数,调用涨薪方法,传入级别level参数,根据级别level输出涨薪工资,并同时显示员工相应的信息。
package 作业3;
class Person { //创建父类Person类
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Person(String name, String address){ //定义构造方法
this.name = name;
this.address = address;
}
}
abstract class Employee extends Person { //创建抽象类Employee类
private int ID;
private int wage;
private int age;
public Employee(String name, String address, int ID,int wage, int age) {
super(name, address);
this.ID = ID;
this.wage = wage;
this.age = age;
}
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
public int getWage() {
return wage;
}
public void setWage(int wage) {
this.wage = wage;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
abstract void add(String level); //定义抽象方法
}
class Manager extends Employee {
private String level;
public Manager(String name, String address, int ID, int wage, int age, String level) {
super(name, address, ID, wage, age);
this.level = level;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public void add(String level) { //实现抽象方法
if ("B".equals(level)) {
setWage((int) (getWage() * 1.1));
} else if ("A".equals(level)) {
setWage((int) (getWage() * 1.2));
}
}
}
public class text { //创建测试类text类
public static void main(String[] args) {
Manager normal = new Manager("张三","编程村", 12,1000,2,"B" );
Manager manager = new Manager("李四","外太空",123,10000,10,"A");
normal.add(normal.getLevel());
manager.add(manager.getLevel());
System.out.println("姓名:"+ normal.getName()+", 地址: "+normal.getAddress()+", 工龄:"+normal.getAge()+", 工号:"+normal.getID()+", 级别:"+normal.getLevel()+", 工资:"+normal.getWage());
System.out.println("姓名:"+ manager.getName()+", 地址: "+manager.getAddress()+", 工龄:"+manager.getAge()+", 工号:"+manager.getID()+", 级别:"+manager.getLevel()+", 工资:"+manager.getWage());
}
}
运行结果为

这篇文章的主要贡献者是@不吃香菜的小孩
如果你有意见或建议,可以在评论区发表评论哦。
本文通过一个案例介绍了如何使用Java的多态特性来处理经理与员工的工资问题。员工和经理均有各自的属性,如工号、工资、工龄等,经理还有级别。案例中,员工涨薪10%,经理涨薪20%。文章详细讲解了利用继承和方法重载实现这一功能的步骤,包括创建Person、Employee和Manager类,以及测试类的编写和运行。最终展示了运行结果。
1576

被折叠的 条评论
为什么被折叠?



