目录
作业介绍
设计父类——员工类。子类:工人类,农民类,教师类,科学家类,服务员类。
1. 其中工人,农民,服务员只有基本工资。
2. 教师除基本工资外,还有课酬(元/天)
3. 科学家除基本工资外,还有年终奖。
4. 编写一个测试类,将各种员工的全年工资全部打印。
Employee类
package com.jin.homework.homework5;
/**
* @author 大力pig
*/
public class Employee {//父类
//属性
//有个带薪的月份,如12, 13, 15
private String name;
private double sal;
private int salMonth = 12;
public Employee(String name, double sal) {
this.name = name;
this.sal = sal;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSal() {
return sal;
}
public void setSal(double sal) {
this.sal = sal;
}
public int getSalMonth() {
return salMonth;
}
public void setSalMonth(int salMonth) {
this.salMonth = salMonth;
}
//方法,打印全年工资
public void printSalary() {
System.out.println(name + "年工资是:" + (sal * salMonth));
}
}
Peasant类
package com.jin.homework.homework5;
/**
* @author 大力pig
*/
public class Peasant extends Employee{
public Peasant(String name, double sal) {
super(name, sal);
}
//农民,服务生只有基本工资
@Override
public void printSalary() {
System.out.println("这是农民的工资信息");
super.printSalary(); //复用父类的方法
}
}
Scientist类
package com.jin.homework.homework5;
/**
* @author 大力pig
*/
public class Scientist extends Employee{
//特有属性,奖金bonus
private double bonus;
public Scientist(String name, double sal) {
super(name, sal);
}
public double getBonus() {
return bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
//科学家计算工资重写父类方法
@Override
public void printSalary() {
System.out.println("这是科学家的工资信息");
System.out.println(getName()+"年工资是:" + (getSal()*getSalMonth()+bonus));
}
}
Teacher类
package com.jin.homework.homework5;
/**
* @author 大力pig
*/
public class Teacher extends Employee {
//特有属性,一年上课次数, 课时费
private int classDays;
private double calssSal;
public Teacher(String name, double sal) {
super(name, sal);
}
public int getClassDays() {
return classDays;
}
public void setClassDays(int classDays) {
this.classDays = classDays;
}
public double getCalssSal() {
return calssSal;
}
public void setCalssSal(double calssSal) {
this.calssSal = calssSal;
}
@Override
public void printSalary() {//不能复用父类的计算工资方法,教师的年薪 = 基本工资 + 课时工资
System.out.println("这是老师的工资信息");
System.out.println(getName()+"年工资是:" +(getSal()*getSalMonth()+calssSal*classDays));
}
}
Waiter类
package com.jin.homework.homework5;
/**
* @author 大力pig
*/
public class Waiter extends Employee {
//服务生有小费
private double tip;
private int tipTimes;
public Waiter(String name, double sal) {
super(name, sal);
}
public double getTip() {
return tip;
}
public void setTip(double tip) {
this.tip = tip;
}
public int getTipTimes() {
return tipTimes;
}
public void setTipTimes(int tipTimes) {
this.tipTimes = tipTimes;
}
//服务生的年工资信息是,基本工资+ 小费
@Override
public void printSalary() {
System.out.println("这是服务生的工资信息");
System.out.println(getName() + "的年工资是:" +(getSalMonth()*getSal() + tip*tipTimes));
}
}
Worker类
package com.jin.homework.homework5;
/**
* @author 大力pig
*/
public class Worker extends Employee{
public Worker(String name, double sal) {
super(name, sal);
}
//工人只有基本工资,只要提示下当前信息即可
@Override
public void printSalary() {
System.out.println("这是工人的工资信息");
super.printSalary(); //复用父类的方法
}
}
测试类
package com.jin.homework.homework5;
/**
* @author 大力pig
*/
public class Homework5 {
public static void main(String[] args) {
Worker jack = new Worker("jack", 10000);
jack.setSalMonth(10);//jack一年就上班了10个月,set方法可以灵活的修改上班有效时间
jack.printSalary();
Peasant smith = new Peasant("Smith", 20000);
smith.printSalary();
Teacher pig = new Teacher("pig", 2000);
//老师有课时费,每节课工资100元
pig.setCalssSal(100);
pig.setClassDays(360);
pig.printSalary();
Scientist smallBao = new Scientist("smallBao", 30000);
smallBao.setBonus(99999);
smallBao.printSalary();
Waiter hi = new Waiter("hi", 10000);
hi.setTip(10);
hi.setTipTimes(25);
hi.printSalary();
}
}