抽象類詳解

一,抽象類介紹


1.1 什麼是抽象

       抽象類:簡單點來說就是不能實例化的類(或者說不能用new方法實例化的類)抽象類有點類似“模板的作用,其目的是根據他的格式來創建和修改新的類。(比如:蓋房子首先有要畫圖紙,在照着圖紙進行造房子。圖紙就好比如抽象類,建房子就好比如抽象類派生的子類)

1.2 抽象方法

       抽象方法:含有Abstract關鍵字開頭的方法叫做抽象方法。注意抽象方法聲明中修飾符static和abstract不能同時使用。抽象方法沒有方法體,否則會報錯。
       原因解釋
       1. 抽象方法爲什麼沒有方法體:抽象類的抽象方法需要繼承它的子類來實現,如果有方法體,子類去玩嗎?本來抽象類起到的類似於”模板”的作用,好比於一種參考。
       2. 抽象方法爲什麼abstract和static不能同時使用:這要探討static修飾符的特性了,靜態方法屬於整個類的,靜態方法只能訪問靜態成員變量或調用靜態的成員方法。靜態方法和靜態屬性可以被繼承,但是沒有被重寫而是被隱藏。(這個下篇文章我會講解),抽象類被繼承後抽象方法會重寫,而靜態方法會被隱藏沒有重寫。

1.3 兩者之間的關係

       關係:含有抽象方法的類叫做抽象類,抽象類不一定還有抽象方法。

1.4 抽象類的特性

  1. 抽象類本能被實例化不能new
  2. 抽象類的抽象方法abstract和static不能同時使用
  3. 抽象類中可以有屬性, 可以存在普通方法,抽象類一定有構造方法,其目的是對屬性的初始化。
  4. 抽象類不能別final聲明(final定義的類沒有子類)
  5. 可以直接調用抽象類中的靜態方法(靜態方法屬於類的本身)

    1.5 代碼演示:

 abstract public class A {
    public int a=10;
        public A()
    {

    }
    public void print()
    {
        System.out.println("抽象類中的普通方法");
    }
    public static void printStatic()
    {
        System.out.println("抽象類中的靜態犯法");
    }
    public static void main(String[] args) {
        A.printStatic();
        A a=new A();//對抽象類進行實例化
    }

}

報錯

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Cannot instantiate the type A

    at com.demo.Abstract.Test.A.main(A.java:15)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章