Java中的接口和抽象類。

我們都知道,Java面向對象的封裝特徵之一時,常常會用到接口和抽象類,下面就來看看接口和抽象類,默認在jdk1.8環境下

   1 接口

         接口就是一個規範和抽象類比較相似。它只管做什麼,不管怎麼做,是提供一種統一的’協議’,而接口中的屬性也屬於’協議’中的成員。通俗的講,藉口就是某個事物對外提供的一些功能的聲明,其定義和類比較相似,只不過是通過interface關鍵字來完成,接口是更高級的抽象:

      特點: 1.接口中的所有屬性默認爲:public static final ****; 

                  2.接口中的所有方法默認爲:public abstract ****;排除默認的static方法和default方法

   首先看第一個,爲什麼接口的所有屬性默認實public static final的 ?

   首先接口肯定是可以被不同包不同類來實現的,所以默認是public ,且也只能public 。

   static:一個類繼承多個接口時,即使存在同名變量也不會混淆。如果每個接口都含有一個名爲a的成員變量,那麼在該類中可以通過接口1.a,接口2.a,接口3.a來調用a。

   final:該變量不可被修改。如果一個接口被多個類實現時,在類1中修改了該變量的值,那麼其他類中該變量的值也會變化,要防止該情況的發生。

   第二點:接口中的方法默認爲爲public abstract ... ,是因爲接口是所有的一個規範,既然是規範那就需要其實現類去實現該類,重寫該抽象方法變成實現類自己的特有的行爲;在jdk1.8之後,接口可以寫static 方法和 defalut 方法,並且都不是抽象方法;在static中,默認缺省了訪問修飾符public,並且在別的類中調用時候,只需要類名.static方法名();而default方法,是需要其實現類的實例來調用的,實現類可以選擇重寫或者不重寫,如果不重寫,表示直接用到接口裏面的dafalut方法,但是由於接口可以多個實現的原因,當一個實現類同時實現了多個接口,且這些個接口裏面都有同樣的default()方法,那麼實現類分部清楚到底調用那個接口類的該方法,所以此時必須要重寫default方法

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