用java编写 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; } public void introduce() { System.out.println("我是正式员工" + super.name); } public void printSalary() { System.out.println("薪水为:" + (monthlySalary + bonus)); } }
时间: 2024-03-30 20:40:34 浏览: 120
这段代码是一个 Java 类的构造函数和两个方法的实现。这个类叫做 ContractEmployee,它继承自一个父类,父类的构造函数接收一个 ID、一个名字、一个性别和一个年龄。ContractEmployee 类有两个私有成员变量,一个是 monthlySalary,表示月工资,另一个是 bonus,表示奖金。构造函数接收这两个参数,并通过 super 调用父类的构造函数来初始化父类的成员变量。introduce 方法用于打印一条介绍信息,printSalary 方法用于打印该员工的薪水,即月工资加上奖金。
相关问题
运行这个代码public class Test_03 { public static void main(String[] args) { //员工类:工号\职位\姓名\工资 //经理级:奖金 (奖金和加班费分别用set和get是因为输错,所以单独输入) //后勤:加班费 Manager s1 = new Manager("0001","总经理","张华",5000); s1.setBonus(500);//经理级奖金 s1.work(); Manager s2 = new Manager("0002","副经理","李小",4500); s2.setBonus(350);//经理级奖金 s2.work(); GeneralStaff s3 =new GeneralStaff("1000","后勤主管","叶斯",3300); s3.setOverTimePay(1000);//加班费 s3.work(); GeneralStaff s4 =new GeneralStaff("1001","后勤员工","雷五",2800); s4.setOverTimePay(1000);//加班费 s4.work(); } } class Manager extends Staff {//经理级 public Manager(String id, String position, String name, double salary) { super(id, position, name, salary); } private double bonus;// 奖金 public void setBonus(double bonus) { this.bonus = bonus; } public void work() { super.work(); System.out.println(";奖金:"+ bonus); } } class GeneralStaff extends Staff {// 普通员工类 public GeneralStaff(String id, String position, String name, double salary) { super(id, position, name, salary); // TODO Auto-generated constructor stub } private double overtimepay;// 加班费 public void setOverTimePay(double overtimepay) { this.overtimepay = overtimepay; } public void work() { super.work(); System.out.println(";加班费:"+overtimepay); } } class Staff {// 员工类 private String id;// 工号 private String position;// 职位 private String name;// 姓名 private double salary;// 工资 public Staff(String id, String position, String name, double salary) { super(); this.id = id; this.position = position; this.name = name; this.salary = salary; } public void work() { System.out.print("工号:" + id + ";职位:" + position + ";姓名:" + name + ";工资:" + salary); } }
这段代码是一个员工工资管理系统的实现,包括经理和普通员工两种角色。对于经理级别的员工,还有奖金的设置和输出;对于后勤类的员工,还有加班费的设置和输出。在main函数中,先创建两个经理类和两个后勤类的员工对象,设置相应奖金和加班费后进行工作输出。
#include <iostream> #include <string> using namespace std; class Worker { string name; int age; public: //构造函数 Worker(string w_n, int w_a):name(w_n),age(w_a){} //属性打印 void print() { cout << "姓名:" << name << " 年龄:" << age << endl; } //收入计算 virtual int money() = 0; }; class Waiter :public Worker { int base = 3000; int bonus; public: //构造 Waiter(string n,int a,int b):Worker(n,a),bonus(b){} //收入计算 int money() { return base + bonus; } }; class Singer :public Worker { int hour; public: //构造 Singer(string n, int a, int h) :Worker(n, a), hour(h) {} //收入计算 int money() { return hour * 200; } }; class Both :public Waiter, public Singer { public: //构造 Both(string n, int a, int b, int h) :Worker(n,a),Waiter(n,a,b),Singer(n,a,h){} //收入计算 int money() { return Waiter::money() + Singer::money(); } }; int main() { string n1, n2, n3; int a1, a2, a3; int b1, h2, b3, h3; cout << "请输入员工信息:" << endl; cout << "Waiter的姓名年龄以及奖金:" << endl; cin >> n1 >> a1 >> b1; cout << "Singer的姓名年龄以及工时:" << endl; cin >> n2 >> a2 >> h2; cout << "Waiter-Singer的姓名年龄以及奖金和工时:" << endl; cin >> n3 >> a3 >> b3 >> h3; Waiter w(n1, a1, b1); Singer s(n2, a2, h2); Both b(n3,a3, b3, h3); w.print(); cout <<"Waiter工资为:"<< w.money() << endl; s.print(); cout <<"Singer工资为:"<< s.money() << endl; b.print(); cout <<"Waiter-Singer工资为:"<< b.money() << endl; return 0; }
这是一个简单的员工工资计算程序,包括一个抽象类 Worker 和三个派生类 Waiter、Singer 和 Both。
Worker 类中有一个纯虚函数 money(),用于计算员工的收入。Waiter 和 Singer 分别继承自 Worker 类,并覆盖了 money() 函数,根据不同的工作内容计算出员工的收入。Both 类同时继承自 Waiter 和 Singer 类,使用了虚拟继承方式,避免了多继承的二义性问题。
在 main 函数中,通过用户输入的方式来初始化三个派生类的对象,分别调用其 print() 函数和 money() 函数,输出员工的个人信息和收入情况。
该程序使用了面向对象的思想,将员工的个人信息和收入信息封装成一个对象,使得程序更加清晰、易于维护。同时,使用了继承和多态的特性,使得程序具有灵活性和可扩展性。
阅读全文