//员工工资管理系统
// 员工工资的计算方式
// 按月计算
// 按小时计算
// 如果是生日奖励100元
//实现方式如下
//先声明一个员工类
package com.day28.test;
public abstract class Employee {
private String nameString;
private int number;
private MyDate birthdayDate;
public Employee(String nameString, int number, MyDate birthdayDate) {
super();
this.nameString = nameString;
this.number = number;
this.birthdayDate = birthdayDate;
}
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public MyDate getBirthdayDate() {
return birthdayDate;
}
public void setBirthdayDate(MyDate birthdayDate) {
this.birthdayDate = birthdayDate;
}
//收入
public abstract double earnings();
@Override
public String toString() { //快捷键生成 alt+shift+s
return "nameString=" + nameString + ", number=" + number + ", birthdayDate=" + birthdayDate.toDateString() ;
}
}
//声明一个日期类
package com.day28.test;
public class MyDate {
private int year;
private int month;
private int day;
//构造器
public MyDate(int year, int month, int day) {
super();
this.year = year;
this.month = month;
this.day = 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 toDateString() {
return year+"年"+month+"月"+day+"日";
}
}
//声明一个计算员工月工资的类
package com.day28.test;
//实现 按月计算工资的员工处理
public class SalariedEmployee extends Employee {
//月工资
private double monthSalary;
//因为父类没有空构造器 所以子类继承时 要声明构造器 往父类传参
public SalariedEmployee(String nameString, int number, MyDate birthdayDate) {
super(nameString, number, birthdayDate);
// TODO Auto-generated constructor stub
}
public SalariedEmployee(String nameString, int number, MyDate birthdayDate, double monthSalary) {
super(nameString, number, birthdayDate);
this.monthSalary = monthSalary;
}
@Override
public double earnings() { //收入
// TODO Auto-generated method stub
return monthSalary;
}
public double getMonthSalary() {
return monthSalary;
}
public void setMonthSalary(double monthSalary) {
this.monthSalary = monthSalary;
}
@Override
public String toString() { //重写
// TODO Auto-generated method stub
return "SalariedEmployee ==>"+super.toString();
}
}
//声明一个计算小时工资的类
package com.day28.test;
//按小时计算工资
public class HourlyEmployee extends Employee {
private double wage; //每小时工资
private double hour; //小时
public HourlyEmployee(String nameString, int number, MyDate birthdayDate, double wage, double hour) {
super(nameString, number, birthdayDate);
this.wage = wage;
this.hour = hour;
}
//因为父类没有空构造器 所以子类继承时 要声明构造器 往父类传参
public HourlyEmployee(String nameString, int number, MyDate birthdayDate) {
super(nameString, number, birthdayDate);
// TODO Auto-generated constructor stub
}
@Override
public double earnings() { //重写收入
// TODO Auto-generated method stub
return wage*hour;
}
public double getWage() {
return wage;
}
public void setWage(double wage) {
this.wage = wage;
}
public double getHour() {
return hour;
}
public void setHour(double hour) {
this.hour = hour;
}
@Override
public String toString() { //重写方法
// TODO Auto-generated method stub
return "HourlyEmployee ==>"+super.toString();
}
}
//调试程序类
package com.day28.test;
import java.util.Calendar;
import java.util.Scanner;
//工资管理系统
public class PayrollSystem {
public static void main(String[] args) {
//方式一
//输入当前月份 如果有人生日 奖励一百块钱
// Scanner scanner =new Scanner(System.in);
// System.out.println("请输入日期");
// int month =scanner.nextInt();
//方式二
Calendar calendar =Calendar.getInstance();
int month=calendar.get(Calendar.MONTH)+1; //获取当前日期
System.out.println("当前日期"+month); // 他是从0开始的 所以要+1
//new 一个对象数组 还没去NEW 对象 这是声明了个对象数组 长度为2
Employee[] employee=new Employee[2];
//声明对象
employee[0]=new SalariedEmployee("Json", 1002,new MyDate(2020, 9, 10),12000);
employee[1]=new HourlyEmployee("Whl", 1003, new MyDate(1994, 10, 15),200,8);
for (int i = 0; i < employee.length; i++) {
System.out.println(employee[i]);
double salay= employee[i].earnings();
System.out.println("月工资为"+salay);
if(month == employee[i].getBirthdayDate().getMonth()) {
System.out.println("生日奖励100元!!!");
}
}
}
}java 抽象类 详情 例子
原创
©著作权归作者所有:来自51CTO博客作者json____的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java 抽象类练习例子 抽象类java举例
最近在学习Java,谈一下学习中对抽象类的理解,如有错误与还请大佬指正。 在Java继承中会有子类与超类之分
java 抽象类练习例子 java 抽象类 类 抽象方法
















