某公司员工有临时工和正式员工,两个类的属性和方法要求如下:
- 临时工TempEmployee:
- 属性:ID,姓名,性别,年龄,日薪,
- 方法:
- 自我介绍introduce(),显示“我是临时工xxx(姓名)”
- 打印工资printSalary()(显示日薪)
- 正式员工ContractEmployee:
- 属性:ID,姓名,性别,年龄,月薪,奖金
- 方法:
- 自我介绍introduce(),显示“我是正式员工xxx(姓名)”
- 打印薪水printSalary()(显示月薪+奖金的值)
从以上属性中可以看出,两个类有共同的属性和方法,因此,需要创建父类。编写程序实现以下要求:
1. 创建父类Employees,将共同的属性(ID,姓名,性别,年龄)作为父类的属性。两个抽象方法:introduce()和printSalary()。
2. 创建两个子类:TempEmployee和ContractEmployee,继承自父类Employees。并且实现父类的两个抽象方法。
3. 分别创建两个子类的对象,为对象属性赋值,调用introduce()方法和printSalary()方法,显示个人介绍和自己的工资。
// 定义Employees类,作为父类
abstract class Employees {
protected int ID;
protected String name;
protected String gender;
protected int age;
// 构造函数
public Employees(int ID, String name, String gender, int age) {
this.ID = ID;
this.name = name;
this.gender = gender;
this.age = age;
}
// 定义抽象方法
abstract public void introduce();
abstract public void printSalary();
}
// 定义TempEmployee类,继承Employees类
class TempEmployee extends Employees {
private double dailyWage;
// 构造函数
public TempEmployee(int ID, String name, String gender, int age, double dailyWage) {
super(ID, name, gender, age);
this.dailyWage = dailyWage;
}
// 实现抽象方法introduce()
public void introduce() {
System.out.println("我是临时工" + this.name);
}
// 实现抽象方法printSalary()
public void printSalary() {
System.out.println("我的日薪为:" + this.dailyWage);
}
}
// 定义ContractEmployee类,继承Employees类
class ContractEmployee extends Employees {
private double monthlySalary;
private double bonus;
// 构造函数
public ContractEmployee(int ID, String name, String gender, int age, double monthlySalary, double bonus) {
super(ID, name, gender, age);
this.monthlySalary = monthlySalary;
this.bonus = bonus;
}
// 实现抽象方法introduce()
public void introduce() {
System.out.println("我是正式员工" + this.name);
}
// 实现抽象方法printSalary()
public void printSalary() {
System.out.println("我的薪水为:" + (this.monthlySalary + this.bonus));
}
}
// 测试类
public class Test {
public static void main(String[] args) {
// 创建TempEmployee对象
TempEmployee tempEmployee = new TempEmployee(1001, "张三", "男", 25, 200);
// 调用introduce()方法
tempEmployee.introduce();
// 调用printSalary()方法
tempEmployee.printSalary();
// 创建ContractEmployee对象
ContractEmployee contractEmployee = new ContractEmployee(2001, "李四", "女", 32, 5000, 1000);
// 调用introduce()方法
contractEmployee.introduce();
// 调用printSalary()方法
contractEmployee.printSalary();
}
}
在上述代码中,我们首先定义了一个 Employees 类作为父类,包含了共同的属性 ID、name、gender 和 age,以及两个抽象方法 introduce() 和 printSalary()。接着,我们定义了 TempEmployee 和 ContractEmployee 两个子类,分别继承了 Employees 类,并实现了父类的两个抽象方法。
在测试类中,我们分别创建了一个 TempEmployee 对象和一个 ContractEmployee 对象,然后调用了它们的 introduce() 和 printSalary() 方法,完成了个人介绍和工资的打印。