- package practice;
- /**
- * 抽象类
- * 应用范围:当多个类中出现相同功能,但主体不同,这时可以只抽取功能定义,而不抽取主体。
- *
- * 特点: 1.抽象方法一定定义在抽象类中。
- * 2.抽象方法和抽象类都必须被abstract关键字修饰。
- * 3.抽象类不可以用new创建对象,因为调用没有意义。
- * 4.抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用。
- * 如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
- *
- * 注意:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
- *
- * 练习: 假如我们在开发一个系统时需要对员工进行建模,员工包含3个属性:姓名、工号和工资。
- * 经理也是员工,除了含有员工的属性之外,还有一个奖金属性。请使用继承的思想设计出
- * 员工类和经理类,类中提供必要的方法进行访问。
- * @author Qihuan
- *
- */
- abstract class Employee {
- private String name;
- private String id;
- private double pay;
-
- Employee(String name, String id, double pay) {
- this.setName(name);
- this.setId(id);
- this.setPay(pay);
- }
-
- public abstract void work();
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public double getPay() {
- return pay;
- }
- public void setPay(double pay) {
- this.pay = pay;
- }
- }
- class Pro extends Employee {
- Pro(String name, String id, double pay) {
- super(name, id, pay);
- // TODO Auto-generated constructor stub
- }
- @Override
- public void work() {
- // TODO Auto-generated method stub
- System.out.println("professional work");
- }
-
- }
- class Manager extends Employee {
-
- private int bonus;
- Manager(String name, String id, double pay, int bonus) {
- super(name, id, pay);
- this.setBonus(bonus);
- }
- @Override
- public void work() {
- // TODO Auto-generated method stub
- System.out.println("manager work");
- }
- public int getBonus() {
- return bonus;
- }
- public void setBonus(int bonus) {
- this.bonus = bonus;
- }
-
- }
- public class AbstractPractice {
- }
复制代码
|
|