java 抽象类 详情 例子
发布日期:2021-06-30 15:37:25 浏览次数:2 分类:技术文章

本文共 4288 字,大约阅读时间需要 14 分钟。

//员工工资管理系统

// 员工工资的计算方式 

//  按月计算

// 按小时计算

// 如果是生日奖励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元!!!");
            }
            
        }
        
    }

}

 

转载地址:https://jsonll.blog.csdn.net/article/details/108353358 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java 接口(interface) 语法的使用和详解
下一篇:java 中模板方法的设计模式及应用场景 (抽象类 抽象方法) 详解

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月28日 15时10分56秒