目录
练习2:构造器拓展练习:Person、Student、Teacher类优化
练习1:员工多态练习
(1)声明一个父类Employee员工类型
有姓名属性,私有化,提供get/set方法
public double earnings():代表实发工资,返回0.0
public String getInfo():显示姓名和实发公子
(2)声明MyDate类型
有int类型的年,月,日属性,私有化,提供get/set方法
提供public String getInfo(),返回“xxxx年xx月xx日”
(3)声明一个子类SalaryEmployee正式工,继承父类Employee
增加属性,double 类型的薪资,MyDate类型的出生日期,私有化,提供get/set方法
重写方法,public double earning()返回实发工资,实发工资= 薪资
重写方法:public String getInfo()显示姓名和实发工资、生日
(4)声明一个子类HourEmployee小时工,继承父类Employee
有属性,double类型的工作小时数和每小时多少钱
重写方法,public double earning()返回实发工资,实发工资= 每小时多少钱*小时数
重写方法:public String getInfo()显示姓名和实发工资、时薪,工作小时数
(5)声明一个子类Manager经理,继承SalaryEmployee
增加属性:奖金比例,私有化,提供get/set方法
增加方法:public double earning()返回实发工资,实发工资=薪资*(1+奖金比例)
增加方法:public String getInfo():显示姓名和实发工资,生日,奖金比例
(6)声明一个员工数组,存储各种员工,遍历查看每个人的详细信息,并统计实发工资总额,通知财务准备资金
(7)从键盘输入当期月份值,如果他是正式工(salaryEmployee和Manager),并且是本月生日的,通知领取生日礼物
代码为:
public class Employee {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double earning(){
return 0.0;
}
public String getInfo(){
return "姓名:"+name+"实发工资:"+earning();
}
}
public class MyDate {
private int year;
private int month;
private int day;
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public String getInfo(){
return year+"年"+month+"月"+day+"日";
}
}
public class SalaryEmployee extends Employee{
private double salary;
private MyDate birthday;
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public MyDate getBirthday() {
return birthday;
}
public void setBirthday(MyDate birthday) {
this.birthday = birthday;
}
@Override
public double earning() {
return salary;
}
@Override
public String getInfo() {
return super.getInfo()+"生日:"+birthday.getInfo();
}
}
public class HourEmployee extends Employee{
private double hour;
private double hour_salary;
public double getHour() {
return hour;
}
public void setHour(double hour) {
this.hour = hour;
}
public double getHour_salary() {
return hour_salary;
}
public void setHour_salary(double hour_salary) {
this.hour_salary = hour_salary;
}
@Override
public double earning() {
return hour*hour_salary;
}
@Override
public String getInfo() {
return super.getInfo()+"时薪:"+hour_salary+"工作小时数"+hour;
}
}
public class Manager extends SalaryEmployee{
private double bonusRatio;
public double getBonusRatio() {
return bonusRatio;
}
public void setBonusRatio(double bonusRatio) {
this.bonusRatio = bonusRatio;
}
@Override
public double earning() {
return super.earning()*(1+bonusRatio);
}
@Override
public String getInfo() {
return super.getInfo()+"奖金比例:"+bonusRatio;
}
}
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Employee[] arr = new Employee[3];
SalaryEmployee s = new SalaryEmployee();
s.setName("张三");
MyDate d1 = new MyDate();
d1.setYear(2000);
d1.setMonth(1);
d1.setDay(2);
s.setBirthday(d1);
s.setSalary(10000);
arr[0] = s;
HourEmployee h = new