抽象类

  • 代表一个抽象概念的类;
  • 规定整个类家族都必须具备的属性和行为。
  • 抽象类是用来捕捉子类的通用特性的,是被用来创建继承层级里子类的模板。
  • 现实中有些父类中的方法确实没有必要写,因为各个子类中的这个方法肯定会有不同;而写成抽象类,这样看代码时,就知道这是抽象方法,而知道这个方法是在子类中实现的,所以有提示作用。

一、抽象类性质

  • 类名前加修饰符abstract;
  • 可包含常规类能包含的任何成员,包括非抽象方法;
  • 也可包含抽象方法:用abstract修饰,只有方法原型,没有方法的实现(没有方法体);
  • 没有具体实例对象的类,不能使用new方法进行实例化,只能用作超类;
  • 只有当子类实现了抽象超类中的所有抽象方法,子类才不是抽象类,才能产生实例;
  • 如果子类中仍有抽象方法未实现,则子类也只能是抽象类。
  • 实例化子类时,父类抽象类不会被实例化。

二、抽象方法的优点

  • 隐藏具体的细节信息,所有的子类使用的都是相同的方法原型,其中包含了调用该方法时需要了解的全部信息;
  • 强迫子类完成指定的行为,规定所有子类的“标准”行为。

 三、抽象类和普通类的区别?

  1. 抽象类不能被实例化 普通类可以
  2. 抽象类要被 abstract修饰 普通类不能
  3. 抽象类可以有抽象方法 普通类一定不能有
  4. 抽象类被继承时 子类必须重写全部的抽象方法或者将这个子类改为抽象类,而普通类没有要求。

四、抽象方法和普通方法有什么区别?

  1. 抽象方法没有方法体 普通方法一定要有方法体 
  2. 抽象方法一定要有abstract修饰 普通方法一定不能有 
  3. 抽象方法只能在抽象类中,普通方法既可以在抽象类中也可以在普通类中。

五、使用抽象类的优势是什么?

  • 抽象类提供了部分实现,使子类可以重用部分抽象类的代码 (提高代码的复用性)。
  • 抽象类为其子类提供了共同的接口。
  • 抽象类中的抽象方法在子类中重写,保证了子类还具有自身的独特性。

  • 通过抽象类指向其子类的对象,可以实现多态。

接口

一、接口本质:

  • 接口本质上是一种约定规范

 

二、实现多个接口的语法是什么?

  • 修饰符   class    类名   [extends   父类名]   implements 接口1,接口2,接口3 ,....{}

三、接口性质

  • 子类通过implements来实现接口中的规范。
  • 接口不能创建实例,但是可用于声明引用变量类型。
  • 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。
  • JDK1.8(不含8)之前,接口中只能包含静态常量(public static final String name="OK";)、抽象方法(public abstract void ccc();),不能有普通属性、构造方法、普通方法。JDK1.8(含8)后,接口中包含普通的静态方法(public static void cc(){}、默认方法(default void ccc(){})和静态常量(默认是静态常量)

    

 

posted on   菜鸟Curry  阅读(33)  评论(0编辑  收藏  举报
努力加载评论中...



点击右上角即可分享
微信分享提示