Java 基礎學習總結(一)抽象類和介面

大佬不是一天練成的發表於2019-03-21

  接觸java的時間不是很長,以前對抽象類和介面的定義和區別也是模糊不清,最近拿起學校的教程讀了起來,也參閱了網上的部落格大神理解和總結,於是決定自己按照自己的理解來總結一下。

 

    抽象類(半成品)

    一般形式:

      protected abstract class person(classname){

        ......

      }

 

  抽象方法:就是用abstract關鍵字宣告的方法。例如:

  abstarct void walk(); 這個方法就是一個抽象方法。

  這裡我們注意到,這個方法跟一般的方法是不同的,它沒有方法體,亦即是{},我們只需要對其進行宣告,而不去實現它。但是如果我們不實現這個方法,那還宣告幹什麼呢?不是吃飽了沒事幹嗎?其實不然,宣告抽象方法的目的是為了繼承(extends)比 如有兩個類,一個父類,一個子類,在父類中實現這個方法是毫無意義,但是在子類中實現這個方法是必須的,那麼此時就可以把 這樣的方法宣告為抽象方法了。

  一般情況下,如果一個類含有抽象方法,那麼這個類就一定是抽象類;但是反之,如果一個類是抽象類,它不一定就有抽象方法。

  


 

  抽象類和普通類的區別:

  大多數的情況下,抽象類和普通類沒什麼區別,比如說同樣擁有成員變數、成員方法以及構造方法,但是和普通類相比還是有以下的幾點不同:

     1. 抽象類的宣告時關鍵字必須為 public或者是protected,如果不是這樣,那麼其子類就不能對其進行繼承,既然抽象類不繼承,那還有存在的意義?而且,預設不寫的情況下,其預設的關鍵字是public 。

     2 .抽象類裡面不能 new 物件。其原因是這個類是抽象出來的,根本不存在的類,例項化一個根本不存在的東西是沒有意義的。

     3 .如果一個類繼承一個抽象類,並且這個類裡面存在抽象方法。那麼子類必須要做到

    1)子類一定要對父類的抽象方法進行實現

 

               

 

 

 

 

    2 )如果不實現父類的抽象方法,那麼必須要將子類也宣告為抽象類

  

                       

 

    


   

     介面(極端的抽象類)

      一般形式:

    

      public interface student(interfacename) {
          ......

        }

     和抽象類的存在差不多,也是為了子類的繼承,但是介面的繼承不叫做繼承而是叫做實現,用implements關鍵字代替了extends 關鍵字,而且和繼承不同,介面可以多現,但繼承只能是單繼承

       使用介面時,有以下幾點需要注意:

   1. 介面中的定義:

    1)公開的常量( public static final )

       2)公開的抽象方法(亦即是不能再使用protected) 

       3)公開的內部類、內部介面

    2 .一個類可以實現多個介面,如下,這是允許的。

                               class A implements X,Y,Z {

                                 }

 


 

      抽象類和介面的不同:

      方           法:抽象類可以包含除開抽象方法外的其他方法,但是介面中只存在抽象方法

      變           量:介面中的成員變數的型別都是public static final 型別,但是抽象類的成員變數型別沒有限制。

      子類和父類:抽象類的繼承是單繼承,介面的實現是多實現。

      靜           態:抽象類可以有靜態方法和程式碼塊,但是介面中不允許存在。

    

    

 

 

                                  如若有誤,煩請指出,不勝感激!!!

相關文章