黑马程序员技术交流社区

标题: 抽象类总结 [打印本页]

作者: a80C51    时间: 2015-9-6 17:22
标题: 抽象类总结
抽象类

一、产生原因:
        当多个类中出现相同功能,但功能主体不同。此时可以向上进行抽取,这时,只抽取功能定义,而不抽取功能主体而形成的

类。

二、特点:
a,抽象方法一定定义在抽象类中;
b,抽象方法和抽象类都必须被adstract关键字修饰;
c,抽象类不可以用new创建对象;
d,抽象类中的方法要被使用,必须有子类复写所有的抽象方法后,建立子类对象来调用。
e,如果子类只覆盖部分抽象方法,则该子类还是抽象类。

三、抽象类不可以实例化

四、抽象类中可以不定义抽象方法,这样做,仅仅是不让该类建立对象。

常见错误:
1,抽象类没有用abstract修饰
myAbstract.java:1: 错误: Employee不是抽象的, 并且未覆盖Employee中的抽象方法work()

2,父类的全部抽象方法被子类都重写
myAbstract.java:26: 错误: Managers不是抽象的, 并且未覆盖Employee中的抽象方法information()

  1. abstract class Employee
  2. {
  3.         private String NameStr;
  4.         private String IdStr;
  5.         private double Paypal;
  6.        
  7.         Employee(String name,String id,double pay)
  8.         {
  9.                 this.NameStr = name;
  10.                 this.IdStr = id;
  11.                 this.Paypal = pay;
  12.         }
  13.        
  14.         /*
  15.         public void information()
  16.         {
  17.                 System.out.println("We are family!!!!!!!");
  18.         }
  19.         */
  20.        
  21.         //public abstract void information();
  22.         public abstract void work();
  23.        
  24. }

  25. class Managers extends Employee
  26. {
  27.         private double bouns;
  28.        
  29.         Managers(String name,String id,double pay,double bouns)
  30.         {
  31.                 super(name,id,pay);
  32.                 this.bouns = bouns;
  33.         }
  34.        
  35.         public void work()
  36.         {
  37.                 System.out.println("Manager is working!!!!");
  38.                 System.out.println("His bouns is "+ this.bouns);
  39.         }
  40. }

  41. class Profession extends Employee
  42. {       
  43.         Profession(String name,String id,double pay)
  44.         {
  45.                 super(name,id,pay);
  46.         }
  47.        
  48.         public void work()
  49.         {
  50.                 System.out.println("Profession is working!!!!");
  51.         }
  52. }

  53. public class myAbstract
  54. {
  55.         public static void main(String[] args)
  56.         {
  57.                 Managers mOne = new Managers("Wayne","23",100000.0,30000);
  58.                 Profession pOne = new Profession("Bruce","24",9000.0);
  59.                
  60.                 mOne.work();
  61.                 pOne.work();
  62.         }
  63. }
复制代码

作者: Boint    时间: 2015-9-6 17:48
沙发  顶一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2