Java中的abstract关键字理解

来源:互联网 发布:骑马与砍杀捏脸数据女 编辑:程序博客网 时间:2024/06/06 00:01

首先来看代码:

package abstractExample;public abstract class AbstractClass { //抽象类  public void method1 () {    System.out.println("This is the first method");  }  public abstract void method2 ();  //抽象方法,这个抽象方法不能有body体。}
package abstractExample;public class SubAbstractClass extends AbstractClass { //子类  @Override  public void method2() {    System.out.println("Override the Second method!");  }//  public void method1 () {//    System.out.println("Override the first method!");//  }}
package abstractExample;public class AbstractTest {  public static void main(String[] args) {    SubAbstractClass ab = new SubAbstractClass();    ab.method1();    ab.method2();  }}

以下根据代码来总结一下:

1.类中有抽象方法,这个类也必须是抽象类;

这里写图片描述

如果不是抽象类,会报错。反之,一个抽象类里可能有抽象类,也可能没有抽象类。

2.抽象类不能有实体;

这里写图片描述

加上方法体,同样会报错。

3.不能实例化抽象类;

这里写图片描述

这么写同样报错。

4.子类必须实现抽象方法;

这里写图片描述

这个的前提条件是子类不是抽象类型的,当子类也是抽象类型的时候,可以不用实现超类的所有方法:

这里写图片描述

5.abstract关键字不能应用于static、private或final方法,因为这些方法不能被重写。

这里写图片描述

6.其实这次的代码看着很眼熟。。。貌似是设计模式中的模板模式。。。。

其实抛开设计模式,在很多源码中都应用到抽象类,举个栗子,ClassPathXmlApplication的流程中:

这里写图片描述

有很多抽象方法,其实只知道abstract正确使用方式还是不足够的,还必须知道abstract的作用,在什么场合使用。

原创粉丝点击