抽象类的练习

package lianxi4;

public abstract class Employee {
  private String name;
  private int number;
  private MyDate birthday;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getNumber() {
    return number;
}
public void setNumber(int number) {
    this.number = number;
}
public MyDate getBirthday() {
    return birthday;
}
public void setBirthday(MyDate birthday) {
    this.birthday = birthday;
}
public Employee(String name, int number, MyDate birthday) {
    super();
    this.name = name;
    this.number = number;
    this.birthday = birthday;
}
public abstract double earnings();
@Override
public String toString() {
    return "birthday=" + birthday.toDateString() + ", name=" + name + ", number="
            + number + "]";
}

}
package lianxi4;

public class MyDate {
   private int month;
   private int day;
   private int year;
public MyDate(int month, int day, int year) {
    super();
    this.month = month;
    this.day = day;
    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 int getYear() {
    return year;
}

public void setYear(int year) {
    this.year = year;
}

public String toDateString(){
    return this.year+"年"+this.month+"月"+this.day+"日";
}
}
package lianxi4;

public class SalariedEmployee extends Employee{
private double monthlySalary;
public SalariedEmployee(String name, int number, MyDate birthday,double monthlySalary){
    super(name,number,birthday);
    this.monthlySalary = monthlySalary;
}
@Override
public double earnings() {
    return monthlySalary;
}
@Override
public String toString() {
    return "SalariedEmployee ["+super.toString()+"monthlySalary=" + monthlySalary + "]";
}

}
package lianxi4;

import java.util.Scanner;

public class PayrollSystem {

    public static void main(String[] args) {
        Employee []emps = new Employee[2];  //注意,虽然Employee是抽象类,但是是定义数组,不是实例化
        emps[0] = new SalariedEmployee("小明",1001,new MyDate(5,3,1990),4000);//体现多态性
        emps[1] = new HourlyEmployee("小红",1002,new MyDate(4,12,1993),20,8);
        
        Scanner s = new Scanner(System.in);
        System.out.println("请输入当前月份");
        int month = s.nextInt();
        for(int i=0;i< emps.length;i++){
            System.out.println(emps[i]);
            if(month==emps[i].getBirthday().getMonth()){
                System.out.println("增加"+emps[i].getName()+"工资100元");
                
            }
        }

    }

}

结果:

请输入当前月份
4
SalariedEmployee [birthday=1990年5月3日, name=小明, number=1001]monthlySalary=4000.0]
HourlyEmployee [birthday=1993年4月12日, name=小红, number=1002]hour=8, wage=20.0]
增加小红工资100元

原文地址:https://www.cnblogs.com/yjtm53/p/4141623.html