思路:
/* 某公司人员分为员工和经理,但经理也属于员工的一种 公司员工都有自己的姓名和地址, 员工和经理都有工号、工资、工龄等属性 经理还有对应的在公司的级别 假设每次给员工涨工资10%,给经理涨20% 要求用多态实现给员工涨工资 方法重载 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进行实例化,传入参数,调用add方法, 传入级别level参数,根据级别level输出涨薪后的工资。 */
代码:
代码结构:
测试类:
package base.base013;
/*
某公司人员分为员工和经理,但经理也属于员工的一种
公司员工都有自己的姓名和地址,
员工和经理都有工号、工资、工龄等属性
经理还有对应的在公司的级别
假设每次给员工涨工资10%,给经理涨20%
要求用多态实现给员工涨工资
方法重载
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进行实例化,传入参数,调用add方法,
传入级别level参数,根据级别level输出涨薪后的工资。
*/
public class Test13 {
public static void main(String[] args) {
Manager m1 = new Manager("夏习清","北京",002,50000,25,"1");
Manager m2 = new Manager("周自珩","北京",001,50000,25,"0");
System.out.println(m1.getName());
m1.add(m1.getLevel());
System.out.println("涨薪后:" + m1.getWage());
System.out.println(m2.getName());
m2.add(m2.getLevel());
System.out.println("涨薪后:" + m2.getWage());
}
}
抽象类Employee类:
package base.base013;
/*
2.创建抽象类Employee类,继承Person类
创建构造方法,在构造方法中调用父类的构造方法
在Employee类中定义员工的ID、wage(工资)、age(年龄)等属性,
在类中定义涨工资的抽象方法add()
通过对职位的判断来给员工或经理涨工资
*/
public abstract class Employee extends Person{
private int ID;
private double wage;
private int age;
public Employee(int ID, double wage, int age) {
this.ID = ID;
this.wage = wage;
this.age = age;
}
public Employee(String name, String address, int ID, double 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 double getWage() {
return wage;
}
public void setWage(double wage) {
this.wage = wage;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void add(String level);
}
Manager类:
package base.base013;
/*
3.创建子类Manager类继承Employee类,
创建构造方法,在构造方法中调用父类的构造方法
由于经理有两种身份,既是employee又是manager,所以Manager继承Employee
在Manager类中定义等级属性level,并给出level的getter和setter方法
实现Employee类的add()抽象方法
*/
public class Manager extends Employee{
private String level;
public Manager(int ID, int wage, int age) {
super(ID, wage, age);
}
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;
}
@Override
public void add(String level) {
if("0".equals(level)){
System.out.println("普通员工,涨薪10%");
super.setWage(super.getWage()*1.1);
}else if("1".equals(level)){
System.out.println("经理,涨薪20%");
super.setWage(super.getWage()*1.2);
}
}
}
Person类:
package base.base013;
/*
1.创建父类Person类,
在Person类中定义name和address属性,并定义该类的构造方法
*/
public class Person {
private String name;
private String address;
public Person() {
}
public Person(String name, String address) {
this.name = name;
this.address = 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;
}
}