赞
踩
1.abstract:抽象的
2.abstract可以用来修饰的结构:类、方法
3.abstract修饰类:抽象类
此类不能实例化
抽象类中一定有构造器,
便于子类实例化时调用(涉及:子类对象实例化的全过程)
开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作
4.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();
}
子类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("普通员工正在工作...");
}
}
子类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); } }
编写工资系统,实现不同类型员工(多态)的按月发放工资。如果当月出现某个
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。