oopDay02Homework

1 继承案例:正方形与长方形

声明一个类 Square,表示正方形:

  • 属性:int 类型的边长(width)
  • 构造器:int 类型的参数,传入数值用于在造器中初始化 width
  • 方法:名为area() ,计算并返回正方形的面积

声明一个类 Rectangle,表示长方形:

  • 继承自 Square 类
  • 属性:int 类型的长度(length)
  • 构造器:两个 int类型的参数,用于在构造器中初始化 width 和 length
  • 重写area()方法:计算并返回长方形的面积

编写一个测试类:

  • 在main方法中分别创建 Square 类和 Rectangle 类的对象
  • 调用这2个对象的 area()方法,将得到的面积输出到控制台

测试输出效果如下:

正方形面积 : 25

长方形面积: 40

/**
* 正方形类
*/
public class Square {
int width;
public Square(int width) {
this.width = width;
}
public int area(){
return width*width;
}
}

/**
* 长方形类
*/
public class Rectangle extends Square {
int length;

public Rectangle(int width,int length) {
super(width);
this.length =length;
}

@Override
public int area() {
return width * length;
}
}

/**
* 正方形与长方形测试类
*/
public class Test {
public static void main(String[] args) {
Square square = new Square(5);
Rectangle rectangle = new Rectangle(5,8);
System.out.println("正方形的面积:"+square.area());
System.out.println("长方形的面积:"+rectangle.area());
}
}

2 根据需求完成类的声明

有5个类,其继承关系如下图所示:

1、Employee类

  • 所有员工总的父类
  • 构造器:传入员工的姓名(String类型)和生日月份(int类型)
  • 方法:getName( ),返回String类型的姓名
  • 方法:getSalary(int month) ,返回 double 类型的薪资,参数为发薪月,如果该月员工过生日,则额外奖励100元

2、SalariedEmployee 类:Employee的子类,拿固定工资的员工

  • 构造器:传入员工的姓名(String类型)、生日月份(int类型)、底薪(double类型)
  • 重写方法 getSalary(int month) :加上底薪

3、HourlyEmployee 类:Employee的子类,按小时拿工资的员工

  • 薪资收入 = 每小时的工资 * 每月工作的小时数(每月工作超出160小时的部分按照1.5倍工资发放)
  • 构造器:传入员工的姓名(String类型)、生日月份(int类型)、小时薪资(double类型)、工作的小时数(int类型)
  • 重写方法 getSalary(int month) :加上小时工资

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

  • 构造器:传入员工的姓名(String类型)、生日月份(int类型)、销售额(double类型)、提成率(double类型)
  • 重写方法 getSalary(int month) :加上销售工资=销售额*提成率

5、BasePlusSalesEmployee 类:SalesEmployee的子类,有固定底薪的销售人员

  • 薪资收入 = 底薪 + 销售额*提成率
  • 构造器:传入员工的姓名(String类型)、生日月份(int类型)、销售额(double类型)、提成率(double类型)、底薪(double类型)
  • 重写方法 getSalary(int month) :计算薪资收入

根据上述需求完成相关类的声明,并编写一个测试类:

  • 在main方法中创建除Employee类以外的所有类的对象

  • 调用每个对象的getSalary方法

  • 将得到的工资输出到控制台,验证能否正确输出该员工的工资

  • 运行效果如下所示:

    ​ 宇宙集团2月工资表:

    赵君 : 100.0

    宋婕 : 8000.0

    王超 : 3700.0
    秋娥 : 10100.0
    郭镫鸿 : 110000.0

/**
* 所有员工的父类
*/
public class Employee {
private String name;
private int month;

public Employee(String name, int month) {
this.name = name;
this.month = month;
}
public String getName() {
return name;
}
public double getSalary(int month){
if (this.month==month){
return 100;
}else
return 0;
}
}

/**
* 拿固定工资的员工
*/
public class SalariedEmployee extends Employee {
private double salary;
public SalariedEmployee(String name, int month,double salary) {
super(name, month);
this.salary =salary;
}

@Override
public double getSalary(int month) {
return super.getSalary(month)+this.salary;
}
}


public class SalesEmployee extends Employee {
private double sales;//销售额
private double rate;//提成率

public SalesEmployee(String name, int month, double sales, double rate) {
super(name, month);
this.sales = sales;
this.rate = rate;
}

@Override
public double getSalary(int month) {
return super.getSalary(month) +this.sales*this.rate;
}
}



public class HourlyEmployee extends Employee {
private double salary;
private int time;

public HourlyEmployee(String name, int month,double salary,int time) {
super(name, month);
this.salary = salary;
this.time = time;
}

@Override
public double getSalary(int month) {
double total =-1;
if (this.time<=160){
total = this.salary*this.time;
}else {
total =this.salary*160+(this.time-160)*this.salary*1.5;
}
return super.getSalary(month)+total;
}
}

public class BasePlusSalesEmployee extends SalesEmployee {
private double salary;

public BasePlusSalesEmployee(String name, int month, double sales, double rate, double salary) {
super(name, month, sales, rate);
this.salary = salary;
}

@Override
public double getSalary(int month) {
return super.getSalary(month)+this.salary;
}
}


public class Test1 {
public static void main(String[] args) {
Employee employee = new Employee("赵君",2);
SalariedEmployee salariedEmployee = new SalariedEmployee("宋婕",1,8000);
HourlyEmployee hourlyEmployee = new HourlyEmployee("王超",5,10,300);
SalesEmployee salesEmployee = new SalesEmployee("秋娥",2,200000,0.05);
BasePlusSalesEmployee basePlusSalesEmployee = new BasePlusSalesEmployee("郭镫鸿",1,1000000,0.1,10000);
int month = 2;
System.out.println("宇宙集团"+month+"月工资表:");
System.out.println(employee.getName()+":"+employee.getSalary(month));
System.out.println(salariedEmployee.getName()+":"+salariedEmployee.getSalary(month));
System.out.println(hourlyEmployee.getName()+":"+hourlyEmployee.getSalary(month));
System.out.println(salesEmployee.getName()+":"+salesEmployee.getSalary(month));
System.out.println(basePlusSalesEmployee.getName()+":"+basePlusSalesEmployee.getSalary(month));
}
}