Java中的abstract關鍵字理解

首先來看代碼:

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的作用,在什麼場合使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章