java基礎之--接口

正文

JAVA是隻支持單繼承的,但現實中存在很多多重繼承現象,比如“人是一種可愛的生物”,人可以從“可愛的生物”這個類繼承,“人是一種可以思考的動物”,人又從“會思考的動物”這個類繼承。這樣人可以分別從 “可愛的生物”、“會思考的動物” 這兩個類繼承,但由於JAVA只支持單繼承,因此人不可以同時繼承這兩個類。爲了實現這種現象,就出現了接口,接口可以實現多繼承。

什麼是接口?

  • 接口是抽象方法和常量值的定義的集合
  • 接口實際上是特殊的抽象類,它只包含常量和方法的定義,而沒有變量和方法的實現

接口舉例

package com.mlin;

interface  SoulPer {
    
    public static final int i = 0;//常量的定義
    
    //方法的定義
    public void call();
    public void run();

}

接口的特性

  • 接口可以多重實現
  • 接口可以繼承其他接口,並添加屬性和方法
  • 接口中聲明的屬性默認是public static final的,並且也只能是public static final
  • 接口中定義的方法爲抽象方法,只能是public的。

在接口中定義常量,有時候是這樣寫int i = 0;,那是因爲接口中聲明的屬性默認是public static final的,public static final可省略不寫。同理,接口中聲明的方法都是抽象的,所以可以省略abstract關鍵字,寫成public void call();注意:在接口裏面聲明的抽象方法默認是“public(公共的)”的,也只能是“public(公共的)”,之所以要這樣聲明是爲了修正C++裏面多重繼承的時候容易出現問題的地方,C++的多繼承容易出現問題,問題在於多繼承的多個父類之間如果他們有相同的成員變量的時候,這個引用起來會相當地麻煩,並且運行的時候會產生各種各樣的問題。JAVA爲了修正這個問題,把接口裏面所有的成員變量全都改成static final,成員變量是static類型,那麼這個成員變量就是屬於整個類裏面的,而不是專屬於某個對象。對於多重繼承來說,在一個子類對象裏面實際上包含有多個父類對象,而對於單繼承來說,子類對象裏面就只有一個父類對象。多繼承子類對象就有多個父類對象,而這些父類對象之間可能又會存在有重複的成員變量,這就非常容易出現問題,因此在JAVA裏面避免了這種問題的出現,採用了接口這種方式來實現多繼承。作爲接口來說,一個類可以從接口繼承,接口裏面的成員變量不專屬於某個對象,都是靜態的成員變量,是屬於整個類的,因此一個類去實現多個接口也是無所謂的,不會存在對象之間互相沖突的問題。實現多個接口,也就實現了多重繼承,而且又避免了多重繼承容易出現問題的地方,這就是用接口實現多重繼承的好處。

總結

接口和接口之間可以相互繼承,類和類之間可以相互繼承,類和接口之間,只能是類來實現接口

原創作者:凌小樣
作品鏈接:https://www.jianshu.com/p/a4820eefa075
【原創不易,轉載請註明出處,感謝理解】
一位愛生活,愛創作,愛分享,愛自己的90後女程序員一枚,記錄工作中的點點滴滴,一起學習,共同進步,期待能和優秀的您交上朋友

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