当前位置:   article > 正文

Java基础学习day14【谷】_定义一个公司员工类,属性有姓名、员工号和部门以及当前员工对象个数,有2个构造方

定义一个公司员工类,属性有姓名、员工号和部门以及当前员工对象个数,有2个构造方

Java基础学习day14

abstract关键字的使用

1.abstract:抽象的
2.abstract可以用来修饰的结构:类、方法
3.abstract修饰类:抽象类

此类不能实例化
抽象类中一定有构造器,
便于子类实例化时调用(涉及:子类对象实例化的全过程)
开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作
4.abstract修饰方法:抽象方法
抽象方法只有方法的声明,没有方法体
包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法的。

若子类重写了父类中的所有的抽象方法后,此子类方可实例化
若子类没有重写父类中的所有的抽象方法,则此子类也是一个抽象类,需要使用abstract修饰

abstract注意点

abstract不能去修饰方法和构造器

abstract不能修饰静态方法、私有方法、final方法、final类

练习

编写一个Employee类,声明为抽象类,
包含如下三个属性:name,id,salary。
提供必要的构造器和抽象方法:wok()
对于Manager类来说,他既是员工,还具有奖金(bonus))的属性。
请使用继承的思想,设计CommonEmployee类和Manager类,要求类中提供必要的方法进行属性访问。

抽象父类Employee

public abstract class Employee {
   
    private String name;
    private int id;
    private int salary;

    public Employee(String name, int id, int salary) {
   
        this.name = name;
        this.id = id;
        this.salary = salary;
    }

    public abstract void work();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

子类CommonEmployee

public class CommonEmployee extends Employee{
   

    public CommonEmployee(String name, int id, int salary) {
   
        super(name, id, salary);
    }

    @Override
    public void work() {
   
        System.out.println("普通员工正在工作...");

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

子类Manager

public class Manager extends Employee{
   
    private int bonus;

    public Manager(String name, int id, int salary, int bonus) {
   
        super(name, id, salary);
        this.bonus = bonus;
    }

    @Override
    public void work() {
   
        System.out.println("我是经理,我正在工作...我的奖金是:"+bonus);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

练习二

编写工资系统,实现不同类型员工(多态)的按月发放工资。如果当月出现某个
Employee对象的生日,则将该雇员的工资增加100元。
实验说明:
(1)定义一个Employee类,该类包含:
private成员变量name,number,birthday,其中birthday为yDate类的对象;
abstract方法earnings():
toString()方法输出对象的name,number和birthday。
(2)MyDate类包含:
private成员变量year,month,day;
toDateString()方法返回日期对应的字符串:Xxxx年xx月x日
(3)定义SalariedEmployee类继承Employee:类,实现按月计算工资的员工处
理。该类包括:private成员变量monthlySalary;
实现父类的抽象方法earnings(),该方法返回monthlySalary值;toString()方法输
出员工类型信息及员工的name,number,birthday。

(4)参照SalariedEmployee类定义HourlyEmployee类,实现按小时计算工资的
员工处理。该类包括:
private成员变量wage和hour;
实现父类的抽象方法earnings(),该方法返回wage*hour值;
toString()方法输出员工类型信息及员工的name,number,birthday。
(5)定义PayrollSystem类,创建Employee变量数组并初始化,该数组存放各
类雇员对象的引用。利用循环结构遍历数组元素,输出各个对象的类
型,name,number,birthday.,以及该对象生口。当键盘输入本月月份值时,如果本
月是某个Employee对象的生口,还要输出增加工资信息。

public abstract class Employee {
   
    private String name;
    private int number;
    private MyDate birthday;
    public abstract int earning();

    public Employee(String name, int number, MyDate birthday) {
   
        this.name = name;
        this.number = number;
        this.birthday = birthday;
    }

    public MyDate
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/521570
推荐阅读
相关标签
  

闽ICP备14008679号