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)); } }
|