最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析Java編程中接口的運(yùn)用

 更新時(shí)間:2015年10月28日 08:58:06   作者:孤傲蒼狼  
這篇文章主要介紹了Java編程中接口的運(yùn)用,接口是Java面向?qū)ο蟮睦^承特性的體現(xiàn),需要的朋友可以參考下

接口的本質(zhì)——接口是一種特殊的抽象類,這種抽象類里面只包含常量和方法的定義,而沒有變量和方法的實(shí)現(xiàn)。

  抽象類所具有的一些東西接口可以具有,假如一個(gè)抽象類里面所有的方法全都是抽象的,沒有任何一個(gè)方法需要這個(gè)抽象類去實(shí)現(xiàn),并且這個(gè)抽象類里面所有的變量都是靜態(tài)(static)變量,都是不能改變(final)的變量,這時(shí)可以把這樣的抽象類定義為一個(gè)接口(interface)。把一個(gè)類定義成一個(gè)接口的格式是把聲明類的關(guān)鍵字class用聲明接口的關(guān)鍵字interface替換掉即可。

  接口(interface)是一種特殊的抽象類,在這種抽象類里面,所有的方法都是抽象方法,并且這個(gè)抽象類的屬性(即成員變量)都是聲明成“public static final 類型 屬性名”這樣的,默認(rèn)也是聲明成“public static final”即里面的成員變量都是公共的、靜態(tài)的,不能改變的。因此在接口里面聲明常量的時(shí)候,可以寫成“public static final 類型 常量名=value(值)”這樣的形式,也可以直接寫成“類型 常量名=value(值)”如:“public static final int id=10”可以直接寫成“int id=10”這樣的形式,因?yàn)樵诮涌诶锩婺J(rèn)的屬性聲明都是“public static final”的,因此“public static final”可以省略不寫。在接口里面聲明的抽象方法可以不寫abstract關(guān)鍵字來標(biāo)識,因?yàn)榻涌诶锩嫠械姆椒ǘ际浅橄蟮?,因此這個(gè)“abstract”關(guān)鍵字默認(rèn)都是省略掉的,如在一個(gè)接口里面聲明這樣的三個(gè)方法:“public void start()”、“public void run()”、“public void stop()”這三個(gè)方法前面都沒有使用abstract關(guān)鍵字來標(biāo)識,可它們就是抽象方法,因?yàn)樵诮涌诶锩娴穆暶鞯姆椒ǘ际浅橄蠓椒?,因此在接口里面的抽象方法都會把a(bǔ)bstract關(guān)鍵字省略掉,因?yàn)槟J(rèn)聲明的方法都是抽象的,所以就沒有必要再寫“abstract”字了,這一點(diǎn)與在抽象類里面聲明抽象方法時(shí)有所區(qū)別,在抽象類里面聲明抽象方法是一定要使用“abstract”關(guān)鍵字的,而在接口里面聲明抽象方法可以省略掉“abstract”。注意:在接口里面聲明的抽象方法默認(rèn)是“public(公共的)”的,也只能是“public(公共的)”之所以要這樣聲明是為了修正C++里面多重繼承的時(shí)候容易出現(xiàn)問題的地方,C++的多繼承容易出現(xiàn)問題,問題在于多繼承的多個(gè)父類之間如果他們有相同的成員變量的時(shí)候,這個(gè)引用起來會相當(dāng)?shù)芈闊⑶疫\(yùn)行的時(shí)候會產(chǎn)生各種各樣的問題。JAVA為了修正這個(gè)問題,把接口里面所有的成員變量全都改成static final,成員變量是static類型,那么這個(gè)成員變量就是屬于整個(gè)類里面的,而不是專屬于某個(gè)對象。對于多重繼承來說,在一個(gè)子類對象里面實(shí)際上包含有多個(gè)父類對象,而對于單繼承來說,子類對象里面就只有一個(gè)父類對象。多繼承子類對象就有多個(gè)父類對象,而這些父類對象之間可能又會存在有重復(fù)的成員變量,這就非常容易出現(xiàn)問題,因此在JAVA里面避免了這種問題的出現(xiàn),采用了接口這種方式來實(shí)現(xiàn)多繼承。作為接口來說,一個(gè)類可以從接口繼承(或者叫實(shí)現(xiàn)接口),這也是多繼承,接口里面的成員變量不專屬于某個(gè)對象,都是靜態(tài)的成員變量,是屬于整個(gè)類的,因此一個(gè)類去實(shí)現(xiàn)多個(gè)接口也是無所謂的,不會存在對象之間互相沖突的問題。實(shí)現(xiàn)多個(gè)接口,也就實(shí)現(xiàn)了多重繼承,而且又避免了多重繼承容易出現(xiàn)問題的地方,這就是用接口實(shí)現(xiàn)多重繼承的好處。

1、定義接口
    使用interface來定義一個(gè)接口。接口定義同類的定義類似,也是分為接口的聲明和接口體,其中接口體由常量定義和方法定義兩部分組成。定義接口的基本格式如下:
        [修飾符] interface 接口名 [extends 父接口名列表]{
                [public] [static] [final] 常量;
                [public] [abstract] 方法;
        }
修飾符:可選,用于指定接口的訪問權(quán)限,可選值為public。如果省略則使用默認(rèn)的訪問權(quán)限。
接口名:必選參數(shù),用于指定接口的名稱,接口名必須是合法的Java標(biāo)識符。一般情況下,要求首字母大寫。
extends: 父接口名列表:可選參數(shù),用于指定要定義的接口繼承于哪個(gè)父接口。當(dāng)使用extends關(guān)鍵
              字時(shí),父接口名為必選參數(shù)。
方法:接口中的方法只有定義而沒有被實(shí)現(xiàn)。
例如,定義一個(gè)用于計(jì)算的接口,在該接口中定義了一個(gè)常量PI和兩個(gè)方法,具體代碼如下:

public interface CalInterface  
{ 
  final float PI=3.14159f;//定義用于表示圓周率的常量PI 
  float getArea(float r);//定義一個(gè)用于計(jì)算面積的方法getArea() 
  float getCircumference(float r);//定義一個(gè)用于計(jì)算周長的方法getCircumference() 
} 

注意:
    與Java的類文件一樣,接口文件的文件名必須與接口名相同。
2、實(shí)現(xiàn)接口
接口在定義后,就可以在類中實(shí)現(xiàn)該接口。在類中實(shí)現(xiàn)接口可以使用關(guān)鍵字implements,其基本格式如下:
        [修飾符] class <類名> [extends 父類名] [implements 接口列表]{
           ................
        }
修飾符:可選參數(shù),用于指定類的訪問權(quán)限,可選值為public、abstract和final。
類名:必選參數(shù),用于指定類的名稱,類名必須是合法的Java標(biāo)識符。一般情況下,要求首字母大寫。
extends 父類名:可選參數(shù),用于指定要定義的類繼承于哪個(gè)父類。當(dāng)使用extends關(guān)鍵字時(shí),父類名為必
選參數(shù)。
implements 接口列表:可選參數(shù),用于指定該類實(shí)現(xiàn)的是哪些接口。當(dāng)使用implements關(guān)鍵字時(shí),接口列表為必選參數(shù)。當(dāng)接口列表中存在多個(gè)接口名時(shí),各個(gè)接口名之間使用逗號分隔。
    在類中實(shí)現(xiàn)接口時(shí),方法的名字、返回值類型、參數(shù)的個(gè)數(shù)及類型必須與接口中的完全一致,并且必須實(shí)現(xiàn)接口中的所有方法。例如,編寫一個(gè)名稱為Cire的類,該類實(shí)現(xiàn)5.7.1節(jié)中定義的接口Calculate,具體代碼如下:

public class Cire implements CalInterface  
{ 
  public float getArea(float r)  
  { 
    float area=PI*r*r;//計(jì)算圓面積并賦值給變量area 
    return area;//返回計(jì)算后的圓面積 
  } 
  public float getCircumference(float r)  
  { 
    float circumference=2*PI*r;   //計(jì)算圓周長并賦值給變量circumference 
    return circumference;      //返回計(jì)算后的圓周長 
  } 
  public static void main(String[] args)  
  { 
    Cire c = new Cire(); 
    float f = c.getArea(2.0f); 
    System.out.println(Float.toString(f)); 
  } 
} 

      在類的繼承中,只能做單重繼承,而實(shí)現(xiàn)接口時(shí),一次則可以實(shí)現(xiàn)多個(gè)接口,每個(gè)接口間使用逗號“,”分隔。
      這時(shí)就可能出現(xiàn)(多個(gè)接口中的)常量或方法名沖突的情況,解決該問題時(shí),如果常量沖突,則需要明確指定常量的接口,這可以通過“接口名.常量”實(shí)現(xiàn)。如果出現(xiàn)方法沖突時(shí),則只要實(shí)現(xiàn)一個(gè)方法就可以了。

相關(guān)文章

  • Java實(shí)現(xiàn)轉(zhuǎn)換圖片格式的示例代碼

    Java實(shí)現(xiàn)轉(zhuǎn)換圖片格式的示例代碼

    在日常的軟件開發(fā)中,處理圖像文件是一項(xiàng)常見任務(wù),這篇文章將實(shí)現(xiàn)實(shí)現(xiàn)一個(gè)簡單的Java程序,用于將一種圖片格式轉(zhuǎn)換為另一種格式,需要的可以了解下
    2025-02-02
  • Java 微信公眾號開發(fā)相關(guān)總結(jié)

    Java 微信公眾號開發(fā)相關(guān)總結(jié)

    公眾號作為主流的自媒體平臺,有著不少人使用。這次以文本回復(fù)作為案例來講解Java相關(guān)的微信公眾號開發(fā)
    2021-05-05
  • java仿百度假分頁代碼實(shí)現(xiàn)的詳解

    java仿百度假分頁代碼實(shí)現(xiàn)的詳解

    這篇文章主要介紹了java仿百度假分頁代碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • SpringMVC攔截器運(yùn)行原理及配置詳解

    SpringMVC攔截器運(yùn)行原理及配置詳解

    這篇文章主要介紹了SpringMVC攔截器運(yùn)行原理及配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • spring如何快速穩(wěn)定解決循環(huán)依賴問題

    spring如何快速穩(wěn)定解決循環(huán)依賴問題

    這篇文章主要介紹了spring如何快速穩(wěn)定解決循環(huán)依賴問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 使用Criteria進(jìn)行分組求和、排序、模糊查詢的實(shí)例

    使用Criteria進(jìn)行分組求和、排序、模糊查詢的實(shí)例

    這篇文章主要介紹了使用Criteria進(jìn)行分組求和、排序、模糊查詢的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring Boot超詳細(xì)講解請求處理流程機(jī)制

    Spring Boot超詳細(xì)講解請求處理流程機(jī)制

    SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時(shí)也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起分析請求處理流程機(jī)制
    2022-07-07
  • spring mvc利用ajax向controller傳遞對象的方法示例

    spring mvc利用ajax向controller傳遞對象的方法示例

    這篇文章主要給大家介紹了關(guān)于spring mvc利用ajax向controller傳遞對象的相關(guān)資料,文中通過示例代碼將步驟介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • SpringBoot整合Apache?Pulsar教程示例

    SpringBoot整合Apache?Pulsar教程示例

    這篇文章主要為大家介紹了SpringBoot整合Apache?Pulsar教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • SpringBoot多環(huán)境切換的配置實(shí)現(xiàn)

    SpringBoot多環(huán)境切換的配置實(shí)現(xiàn)

    在日常的開發(fā)中,一般都會分好幾種環(huán)境,本文就來介紹一下SpringBoot多環(huán)境切換的配置實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03

最新評論

原平市| 安达市| 读书| 镇宁| 蒙城县| 华安县| 五寨县| 凤庆县| 临桂县| 枞阳县| 山阴县| 白玉县| 闻喜县| 蒙阴县| 讷河市| 昭通市| 象山县| 延安市| 襄樊市| 屯门区| 章丘市| 郴州市| 集安市| 武义县| 德兴市| 榆林市| 壶关县| 广东省| 呼图壁县| 扶绥县| 房山区| 屏山县| 娱乐| 乐平市| 施秉县| 邳州市| 灵川县| 嘉祥县| 石台县| 偏关县| 德令哈市|