A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qihuan 中级黑马   /  2015-7-10 23:19  /  253 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package practice;

  2. /**
  3. * 抽象类
  4. * 应用范围:当多个类中出现相同功能,但主体不同,这时可以只抽取功能定义,而不抽取主体。
  5. *
  6. * 特点:        1.抽象方法一定定义在抽象类中。
  7. *                 2.抽象方法和抽象类都必须被abstract关键字修饰。
  8. *                 3.抽象类不可以用new创建对象,因为调用没有意义。
  9. *                 4.抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用。
  10. *                       如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
  11. *
  12. * 注意:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
  13. *
  14. * 练习:        假如我们在开发一个系统时需要对员工进行建模,员工包含3个属性:姓名、工号和工资。
  15. *                 经理也是员工,除了含有员工的属性之外,还有一个奖金属性。请使用继承的思想设计出
  16. *                 员工类和经理类,类中提供必要的方法进行访问。
  17. * @author Qihuan
  18. *
  19. */

  20. abstract class Employee {
  21.         private String name;
  22.         private String id;
  23.         private double pay;
  24.        
  25.         Employee(String name, String id, double pay) {
  26.                 this.setName(name);
  27.                 this.setId(id);
  28.                 this.setPay(pay);
  29.         }
  30.        
  31.         public abstract void work();

  32.         public String getName() {
  33.                 return name;
  34.         }

  35.         public void setName(String name) {
  36.                 this.name = name;
  37.         }

  38.         public String getId() {
  39.                 return id;
  40.         }

  41.         public void setId(String id) {
  42.                 this.id = id;
  43.         }

  44.         public double getPay() {
  45.                 return pay;
  46.         }

  47.         public void setPay(double pay) {
  48.                 this.pay = pay;
  49.         }
  50. }

  51. class Pro extends Employee {

  52.         Pro(String name, String id, double pay) {
  53.                 super(name, id, pay);
  54.                 // TODO Auto-generated constructor stub
  55.         }

  56.         @Override
  57.         public void work() {
  58.                 // TODO Auto-generated method stub
  59.                 System.out.println("professional work");
  60.         }
  61.        
  62. }

  63. class Manager extends Employee {
  64.        
  65.         private int bonus;

  66.         Manager(String name, String id, double pay, int bonus) {
  67.                 super(name, id, pay);
  68.                 this.setBonus(bonus);
  69.         }

  70.         @Override
  71.         public void work() {
  72.                 // TODO Auto-generated method stub
  73.                 System.out.println("manager work");
  74.         }

  75.         public int getBonus() {
  76.                 return bonus;
  77.         }

  78.         public void setBonus(int bonus) {
  79.                 this.bonus = bonus;
  80.         }
  81.        
  82. }


  83. public class AbstractPractice {

  84. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马