假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),
不同类型的 雇员按不同的方式支付工资: 经理(Manager):每月获得一份固定的工资。
销售人员(Salesman):在基本工资的基础上每月还有销售提成。 工人(Worker):按
照每月工作的天数计算工资。 根据上述要求试用类的继承和相关机制描述这些功能,并
编写一个 Java 应用程序,演示这些类的用 法。 应设计一个雇员类(Employee)描述所
有雇员的共图特性,这个类应该提供一个计算工资的抽象方法 ComputeSalary(),使得可
以通过这个类计算所有雇员的工资。经理、销售人员和一般工人对应的类都 应该继承这
个类,并重新定义计算工资的方法,进而给出它的具体实现
在这里插入代码片
package Empolee;
import java.util.Scanner;
abstract class Employee{
String name;
double salary;
Employee(){
setName();
ComputeSalary();
}
Employee(String name){
this.name=name;
ComputeSalary();
}
Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
public void setName(){
System.out.println("请输入姓名:");
Scanner reader=new Scanner(System.in);
name=reader.nextLine();
}
public void display(){
System.out.println("员工 " + name +" 的工资为:" + salary);
}
public abstract void ComputeSalary();
}
class Manager extends Employee{
Manager(){
super();
}
Manager(String name){
super(name);
}
Manager(String name, double salary){
super(name, salary);
}
@Override
public void ComputeSalary() {
Scanner reader=new Scanner(System.in);
System.out.println("请输入经理"+name+"的固定工资:");
salary=reader.nextDouble();
System.out.println("经理的 " + name + " 工资为:" + salary);
}
}
class saler extends Employee{
saler(){
super();
}
saler(String name){
super(name);
}
saler(String name,double salary){
super(name,salary);
}
@Override
public void ComputeSalary() {
Scanner reader=new Scanner(System.in);
System.out.println("请输入销售员"+name+"的底薪工资:");
double basicsalary=reader.nextDouble();
System.out.println("请输入销售员"+name+"本月的薪水提成:");
double extrasalary=reader.nextDouble();
salary=basicsalary+extrasalary;
System.out.println("本月销售员"+name+"的工资为:"+salary);
}
}
class worker extends Employee{
worker(){
super();
}
worker(String name){
super(name);
}
worker(String name,double salary){
super(name,salary);
}
@Override
public void ComputeSalary() {
Scanner reader=new Scanner(System.in);
System.out.println("请输入员工"+name+"的日薪:");
int dailysalry=reader.nextInt();
System.out.println("请输入员工"+name+"本月的工作天数:");
int workdays=reader.nextInt();
salary=dailysalry*workdays;
System.out.println("员工"+name+"本月工资为:"+salary);
}
}
public class SlaryTest {
public static void main(String args[]){
Manager manager=new Manager();
Manager manager1=new Manager("吴用");
Manager manager2=new Manager("张军",4500);
manager2.display();
saler sa=new saler();
saler sa1=new saler("李自成");
saler sa2=new saler("陈圆圆",3500);
sa2.display();
worker wor=new worker();
worker wor1=new worker("李欣");
worker wor2=new worker("武钢",4000);
wor2.display();
}
}