题目:某公司的雇员分为以下若干类写一个程序,把若干各种类型的员工放在一个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类
//继承父类Employee
public 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,方法:求周长和求面积
//形状类
//正方形类
//继承父类矩形Rect
public 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.26
18.84
==>矩形周长和面积<==
40.0
26.0
==>正方形周长和面积<==
0.0
20.0Process finished with exit code 0

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

  1. 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性: 员工的姓名,员工的生日月份。 方法:getSalary(

    代码 /*某公司的雇员分为以下若干类:Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份.方法:getSalary(intmonth)根据参数月份来确定工资,如果该月员工过生日, ...

  2. Cola公司的雇员分为以下若干类:(知识点:多态) 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工 的生日月份。方法:getSalary(int month) 根据

    Cola公司的雇员分为以下若干类:(知识点:多态) 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工 的生日月份.方法:getSalary(int month) 根据参 ...

  3. 某公司的雇员分为以下若干类:

    某公司的雇员分为以下若干类: Employee: ​ 这是所有员工总的父类, ​ 属性:员工的姓名,员工的生日月份. ​ 方法:getSalary(int month) 根据参数月份来确定工资,如果该 ...

  4. 某公司的雇员分为以下若干类;

    某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性:员工的姓名,员工的生日月份. 方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日, ...

  5. # 封装,抽象类,继承,重写java编程题 问题描述 ``` 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。 方法:getSalary(int

    封装,抽象类,继承,重写java编程题 问题描述 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份. 方法:getSalary(int month ...

  6. java编程---某公司的雇员分为以下若干类:Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(intmonth)根据参数月份来确定工资。

    题目: 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类, 属性: 员工的姓名,员工的生日月份. 方法:getSalary(intmonth) 根据参数月份来确定工资,如果该月员工 ...

  7. 某公司员工分为若干类

    某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份. 方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则 ...

  8. 四边形可以分为几类_大件物流有哪些公司?大件物流公司的业务可以分为哪几类...

    随着电商市场规模不断扩张,货运渠道,物流公司需求尤为明显,大件物流公司为满足市场需求,大件物流服务需求更是大幅增加,吸引了不少快运企业开始进行竞争.接下来我们就来聊聊大件物流有哪些公司?大件物流行业趋 ...

  9. 电子计算机系统可以分为几类,电子计算机分为两大类.doc

    文档介绍: 第一章电子计算机分为两大类:电子模拟计算机 电子数字计算机通用计算机可分为超级计算机大型机服务器工作站微型机和单片机六类1965年摩尔观察到芯片上的晶体管数量每年翻一番,1970年这种态势 ...

最新文章

  1. 悼念传奇,约翰询问#183;纳什和他的妻子艾丽西亚致敬,创建一个传奇,爱数学...
  2. hdu 5124(线段树区间更新+lazy思想)
  3. 数据存储方案-闭包表
  4. 关于二叉堆(优先队列)的其他操作及其应用
  5. 魔兽世界阿拉索人数最多服务器,魔兽世界8.3哪个区人多_wow8.3服务器人数统计介绍_3DM网游...
  6. Android 8.0 AutoFill自动填写框架实践
  7. LA 3523 圆桌骑士
  8. 计算机辅助语言和语言学关系,西方语言学与多媒体计算机辅助语言学习_王艳萍...
  9. PSD分层高质量名片样机,完美展示商务身份
  10. JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别
  11. Fibonacci算法
  12. 一个网站的诞生- MagicDict开发总结1 [首页]
  13. 面向对象编程(三)——程序执行过程中内存分析
  14. Activiti工作流的流转任务和结束任务
  15. 解读Secondary NameNode的功能
  16. ORACLE幻读(一)
  17. ES6 语法之 Set 与 Map 数据结构
  18. 全球首个冰冻环境下的海上风电场完工
  19. Android AOP 编程实践 javapoet + autoService
  20. java 字符流读取方法_JAVA字符流方式读取文件 问题!

热门文章

  1. 程序员的十层楼,你在第几层???
  2. 一个7年老员工的离职总结:如何打造一个最强大的“自我”
  3. 安卓6.0系统机器最简单激活XPOSED框架的流程
  4. Gadget驱动程序框架
  5. python:编程实现猜单词游戏(含文件按行读取删换行符)
  6. 网络数据保障ptop_工业对特辛基苯酚合成反应多组分预测模型的分步建模方法与流程...
  7. 录音软件-MAGIX Samplitude Pro X5 Suite v16.0.0.25 x64 WiN
  8. 用C语言实现:如果一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
  9. 计算机电子与网络技术,电子信息工程与计算机网络技术探析
  10. Solr or Lucene全文检索实现原理