200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 某公司的雇员分为以下若干类 7-12

某公司的雇员分为以下若干类 7-12

时间:2020-08-19 23:51:25

相关推荐

某公司的雇员分为以下若干类 7-12

题目:某公司的雇员分为以下若干类写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个方法,打印出某月每个员工的工资数额。

注意:要求把每个类都封装,不允许非私有化属性。

Employee:

这是所有员工总的父类,

属性:员工的姓名,员工的生日月份。

方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。

package zuoye;//Employee类public class Employee {private String name;//名字private int month;//生日private double salary;//工资//构造器public Employee(){}public Employee(String name, int month, double salary) {this.name = name;this.month = month;this.salary = salary;}public String getName() {return name;}public int getMonth() {return month;}public double getSalary() {return salary;}public void setName(String name) {this.name = name;}public void setMonth(int month) {this.month = month;}public void setSalary(double salary) {this.salary = salary;}public double getSalary(int month){//判断该月员工是否过生日,过生日则公司会额外奖励100元if (this.month==month){salary +=100;}System.out.println("员工"+getName()+"的工资为"+salary);return salary;}}

SalariedEmployee:

Employee的子类,拿固定工资的员工。

属性:月薪

package zuoye;public class SalariedEmployee extends Employee {private double s1;//月薪//构造器public SalariedEmployee() {}public SalariedEmployee(double s1) {this.s1 = s1;}public double getS1() {return s1;}public void setS1(double s1) {this.s1 = s1;}public double getSalary(int month) {//判断该月员工是否过生日,过生日则公司会额外奖励100元if (this.getMonth() == month) {s1 += 100;}System.out.println("员工" + getName() + "的工资为" + s1);return s1;}}

HourlyEmployee:

Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。

属性:每小时的工资、每月工作的小时数

package zuoye;//HourlyEmployee类//继承父类Employeepublic class HourlyEmployee extends Employee {private int hour; //每小时private double price;//每月工作小时private double s2;//工资//构造器public HourlyEmployee() {}public HourlyEmployee(int hour, double price, double s2) {this.hour = hour;this.price = price;this.s2 = s2;}public int getHour() {return hour;}public double getPrice() {return price;}public double getS2() {return s2;}public void setHour(int hour) {this.hour = hour;}public void setPrice(double price) {this.price = price;}public void setS2(double s2) {this.s2 = s2;}public double getSalary(int month) {//判断该员工是否超出160小时,超出的部分按照1.5倍工资发放if (hour <= 160) {s2 += price * hour;} else {hour = hour - 160;s2 = 160 * price + hour * 1.5 * price;}//判断是否生日,如果生日额外奖励100元if (getMonth() == month) {s2 += 100;}System.out.println("员工" + getName() + "的工资为" + s2);return s2;}}

SalesEmployee:

Employee的子类,销售人员,工资由月销售额和提成率决定。

属性:月销售额、提成率

package zuoye;public class SalesEmployee extends Employee{private double sale;//月销售额private double rate;//提成率//构造器public SalesEmployee(){}public SalesEmployee(double sale, double rate) {this.sale = sale;this.rate = rate;}public double getSale() {return sale;}public double getRate() {return rate;}public void setSale(double sale) {this.sale = sale;}public void setRate(double rate) {this.rate = rate;}public double getSalary(int month) {//判断是否生日,如果生日额外奖励100元if (this.getMonth() == month) {//如果生日,工资=月销售额*提成率+奖励100System.out.println("员工"+getName()+"的工资薪水为:"+ (100 + sale * rate));return (sale * rate) + 100;}else {//如果没有生日,工资=月销售额*提成率System.out.println("员工"+getName()+"的工资薪水为:"+ sale * rate);return sale * rate;}}}

BasePlusSalesEmployee:

SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。

属性:底薪。

package zuoye;public class BasePlusSalesEmployee extends SalesEmployee{private double min;//底薪private double sale;//销售private double ra;//提成//构造器public BasePlusSalesEmployee(){}public BasePlusSalesEmployee(double min, double sale, double ra) {this.min = min;this.sale = sale;this.ra = ra;}public double getMin() {return min;}@Overridepublic double getSale() {return sale;}public double getRa() {return ra;}public void setMin(double min) {this.min = min;}@Overridepublic void setSale(double sale) {this.sale = sale;}public void setRa(double ra) {this.ra = ra;}public double getSalary(int month) {//判断是否生日,如果生日额外奖励100元if (this.getMonth() == month) {//如果生日,工资=底薪+月销售额*提成率+奖励100System.out.println("员工"+getName()+"的工资薪水为:"+ (min + sale * ra + 100));return min + sale * ra + 100;}else {//如果没有生日,工资=底薪+月销售额*提成率System.out.println("员工"+getName()+"的工资薪水为:"+ (min + sale * ra));return min + sale * ra;}}}

测试类

package zuoye;public class Test {public static void main(String[] args) {Employee fan=new Employee("小李", 10, 1000);fan.getSalary(10);SalariedEmployee fan1=new SalariedEmployee();fan1.setName("小杨");fan1.setS1(900000);fan1.setMonth(3);fan1.getMonth();fan1.getSalary(20);BasePlusSalesEmployee fan2=new BasePlusSalesEmployee(4000, 2000, 0.5);fan2.setName("小范");fan2.setMonth(10);fan2.getMonth();fan2.getSalary(20);HourlyEmployee f4=new HourlyEmployee(130, 30, 20);f4.setName("小卢");f4.setMonth(5);f4.getMonth();f4.getSalary(15);SalesEmployee f1=new SalesEmployee(80000, 10);f1.setName("小佳");f1.setMonth(10);f1.getMonth();f1.getSalary(10);}}

运行结果

员工小李的工资为1100.0员工小杨的工资为900000.0员工小范的工资薪水为:5000.0员工小卢的工资为3920.0员工小佳的工资薪水为:800100.0Process finished with exit code 0

2.设计一个形状类(接口)Shape,方法:求周长和求面积

形状类(接口)的子类(实现类):

Rect(矩形)

Circle(圆形)

Rect类的子类:

Square(正方形)

不同的子类会有不同的计算周长和面积的方法

创建三个不同的形状对象,放在Shape类型的数组里,分别打印出每个对象的周长和面积

接口Shape

package zuoye2;//接口public interface Shape {//计算面积的方法double getArea();//计算周长的方法double getPerimeter();}

Rect(矩形)类

package zuoye2;//设计一个形状类(接口)Shape,方法:求周长和求面积//形状类//矩形类public class Rect implements Shape{private double width; //宽度private double height; //高public double getWidth() {return width;}public void setWidth(double width) {this.width = width;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}//一个有参构造,将用于子类正方形public Rect(double width){this.width = width;}//有参构造public Rect(double width, double height) {this.width = width;this.height = height;}@Overridepublic double getArea() {//面积return width * height;}@Overridepublic double getPerimeter() {//周长return (width + height) * 2;}}

Circle(圆形)类

package zuoye2;//设计一个形状类(接口)Shape,方法:求周长和求面积//形状类//圆形类public class Circle implements Shape {private final double PI = 3.14; //圆周率private double r; //半径public Circle(double r) {this.r = r;}public double getPI() {return PI;}public double getR() {return r;}public void setR(double r) {this.r = r;}@Overridepublic double getArea() {//面积return PI * r * r;}@Overridepublic double getPerimeter() {//周长return PI * r * 2;}}

Rect类的子类:

Square(正方形)

package zuoye2;//设计一个形状类(接口)Shape,方法:求周长和求面积//形状类//正方形类//继承父类矩形Rectpublic class Square extends Rect{public Square(double width) {super(width);}@Overridepublic double getArea() {//面积return getWidth() * getHeight();}@Overridepublic double getPerimeter() {//周长return getWidth() * 4;}}

测试类Test

package zuoye2;public class Test {public static void main(String[] args) {Shape[] shape = new Shape[3];shape[0] = new Circle(3);System.out.println("==>圆形周长和面积<==");System.out.println(String.format("%.2f", shape[0].getArea()));System.out.println(shape[0].getPerimeter());shape[1] = new Rect(5, 8);System.out.println("==>矩形周长和面积<==");System.out.println(shape[1].getArea());System.out.println(shape[1].getPerimeter());shape[2] = new Square(5);System.out.println("==>正方形周长和面积<==");System.out.println(shape[2].getArea());System.out.println(shape[2].getPerimeter());}}

运行效果

==>圆形周长和面积<==28.2618.84==>矩形周长和面积<==40.026.0==>正方形周长和面积<==0.020.0Process finished with exit code 0

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。