欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入解析Java編程中接口的運用

 更新時間:2015年10月28日 08:58:06   作者:孤傲蒼狼  
這篇文章主要介紹了Java編程中接口的運用,接口是Java面向對象的繼承特性的體現,需要的朋友可以參考下

接口的本質——接口是一種特殊的抽象類,這種抽象類里面只包含常量和方法的定義,而沒有變量和方法的實現。

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

  接口(interface)是一種特殊的抽象類,在這種抽象類里面,所有的方法都是抽象方法,并且這個抽象類的屬性(即成員變量)都是聲明成“public static final 類型 屬性名”這樣的,默認也是聲明成“public static final”即里面的成員變量都是公共的、靜態(tài)的,不能改變的。因此在接口里面聲明常量的時候,可以寫成“public static final 類型 常量名=value(值)”這樣的形式,也可以直接寫成“類型 常量名=value(值)”如:“public static final int id=10”可以直接寫成“int id=10”這樣的形式,因為在接口里面默認的屬性聲明都是“public static final”的,因此“public static final”可以省略不寫。在接口里面聲明的抽象方法可以不寫abstract關鍵字來標識,因為接口里面所有的方法都是抽象的,因此這個“abstract”關鍵字默認都是省略掉的,如在一個接口里面聲明這樣的三個方法:“public void start()”、“public void run()”、“public void stop()”這三個方法前面都沒有使用abstract關鍵字來標識,可它們就是抽象方法,因為在接口里面的聲明的方法都是抽象方法,因此在接口里面的抽象方法都會把abstract關鍵字省略掉,因為默認聲明的方法都是抽象的,所以就沒有必要再寫“abstract”字了,這一點與在抽象類里面聲明抽象方法時有所區(qū)別,在抽象類里面聲明抽象方法是一定要使用“abstract”關鍵字的,而在接口里面聲明抽象方法可以省略掉“abstract”。注意:在接口里面聲明的抽象方法默認是“public(公共的)”的,也只能是“public(公共的)”之所以要這樣聲明是為了修正C++里面多重繼承的時候容易出現問題的地方,C++的多繼承容易出現問題,問題在于多繼承的多個父類之間如果他們有相同的成員變量的時候,這個引用起來會相當地麻煩,并且運行的時候會產生各種各樣的問題。JAVA為了修正這個問題,把接口里面所有的成員變量全都改成static final,成員變量是static類型,那么這個成員變量就是屬于整個類里面的,而不是專屬于某個對象。對于多重繼承來說,在一個子類對象里面實際上包含有多個父類對象,而對于單繼承來說,子類對象里面就只有一個父類對象。多繼承子類對象就有多個父類對象,而這些父類對象之間可能又會存在有重復的成員變量,這就非常容易出現問題,因此在JAVA里面避免了這種問題的出現,采用了接口這種方式來實現多繼承。作為接口來說,一個類可以從接口繼承(或者叫實現接口),這也是多繼承,接口里面的成員變量不專屬于某個對象,都是靜態(tài)的成員變量,是屬于整個類的,因此一個類去實現多個接口也是無所謂的,不會存在對象之間互相沖突的問題。實現多個接口,也就實現了多重繼承,而且又避免了多重繼承容易出現問題的地方,這就是用接口實現多重繼承的好處。

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

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

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

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

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

相關文章

  • Java使用嵌套循環(huán)模擬ATM機取款業(yè)務操作示例

    Java使用嵌套循環(huán)模擬ATM機取款業(yè)務操作示例

    這篇文章主要介紹了Java使用嵌套循環(huán)模擬ATM機取款業(yè)務操作,結合實例形式分析了Java模擬ATM機取款業(yè)務操作的相關流程控制、數值判斷等操作技巧,需要的朋友可以參考下
    2019-11-11
  • Spring中Controller和RestController的區(qū)別詳解

    Spring中Controller和RestController的區(qū)別詳解

    這篇文章主要介紹了Spring中Controller和RestController的區(qū)別詳解,@Controller是標識一個Spring類是Spring MVC controller處理器,@Controller類中的方法可以直接通過返回String跳轉到jsp、ftl、html等模版頁面,需要的朋友可以參考下
    2023-09-09
  • Struts2+Hibernate實現數據分頁的方法

    Struts2+Hibernate實現數據分頁的方法

    這篇文章主要介紹了Struts2+Hibernate實現數據分頁的方法,結合實例形式分析了Struts2結合Hibernate實現數據分頁的原理,步驟與相關實現代碼,需要的朋友可以參考下
    2016-03-03
  • Springboot啟動停止命令的.sh腳本編寫方式

    Springboot啟動停止命令的.sh腳本編寫方式

    這篇文章主要介紹了Springboot啟動停止命令的.sh腳本編寫方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 如何解決SpringBoot 加入AOP后無法注入的問題

    如何解決SpringBoot 加入AOP后無法注入的問題

    這篇文章主要介紹了如何解決SpringBoot 加入AOP后無法注入的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java實現導出word表格的示例詳解

    Java實現導出word表格的示例詳解

    這篇文章主要為大家詳細介紹了如何利用Java語言導出word表格功能,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的小伙伴可以參考一下
    2022-12-12
  • MyBatis詳解如何實現Dao層接口

    MyBatis詳解如何實現Dao層接口

    MyBatis允許只聲明一個dao接口,而無需寫dao實現類的方式實現數據庫操作。前提是必須保證Mapper文件中的<mapper>標簽的namespace屬性值必須要和dao接口的類路徑一致,MyBatis容器會自動通過動態(tài)代理生成接口的實現類
    2022-04-04
  • 使用jenkins部署springboot項目的方法步驟

    使用jenkins部署springboot項目的方法步驟

    這篇文章主要介紹了使用jenkins部署springboot項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Java程序包不存在的三種解決方法

    Java程序包不存在的三種解決方法

    有時候我們在導入程序之后,系統(tǒng)會給出錯誤提示:Java:程序包xxxx不存在,本文主要介紹了Java程序包不存在的三種解決方法,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • intellij idea創(chuàng)建第一個動態(tài)web項目的步驟方法

    intellij idea創(chuàng)建第一個動態(tài)web項目的步驟方法

    這篇文章主要介紹了intellij idea創(chuàng)建第一個動態(tài)web項目的步驟方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10

最新評論