0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java為什么要使用接口_java接口怎么使用

h1654155282.3538 ? 來源:網(wǎng)絡(luò)整理 ? 2018-03-26 17:44 ? 次閱讀

Java接口是什么

Java接口是一系列方法的聲明,是一些方法特征的集合,一個(gè)接口只有方法的特征沒有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能)。

接口(英語:Interface),在JAVA編程語言中是一個(gè)抽象類型(Abstract Type),它被用來要求類(Class)必須實(shí)現(xiàn)指定的方法,使不同類的對(duì)象可以利用相同的界面進(jìn)行溝通。接口通常以interface來宣告,它僅能包含方法簽名(Method Signature)以及常數(shù)宣告(變量宣告包含了 static 及 final),一個(gè)接口不會(huì)包含方法的實(shí)現(xiàn)(僅有定義)。

接口無法被實(shí)例化,但是可以被實(shí)現(xiàn)。一個(gè)實(shí)現(xiàn)接口的類,必須實(shí)現(xiàn)接口內(nèi)所描述的所有方法,否則就必須宣告為抽象類(Abstract Class)。另外,在Java中,接口類型可用來宣告一個(gè)變量,他們可以成為一個(gè)空指針,或是被綁定在一個(gè)以此接口實(shí)現(xiàn)的對(duì)象。

其中一個(gè)使用接口的優(yōu)勢(shì)是,可以利用他們模擬多重繼承,類在JAVA中不允許多重繼承,所有在JAVA中的類必須而且僅能有一個(gè)父類,而java.lang.Object(JAVA類型系統(tǒng)中最頂層的類型)是唯一一個(gè)例外。

JAVA的類可以被實(shí)現(xiàn)許多個(gè)接口,然而一個(gè)接口則無法實(shí)現(xiàn)其他的接口。

Java為什么要使用接口

實(shí)現(xiàn)具體功能時(shí),接口和實(shí)現(xiàn)的類分離。接口定義為XxxService,實(shí)現(xiàn)為XxxServiceImpl。接口提供了一個(gè)公用的方法提供方。 接口是用來規(guī)定子類的行為的。

面向接口編程的好處:

1、根據(jù)客戶提出的需求提出來,作為接口的;業(yè)務(wù)具體實(shí)現(xiàn)是通過實(shí)現(xiàn)接口類來完成的。

2、當(dāng)客戶提出新的需求時(shí),只需編寫該需求業(yè)務(wù)邏輯新的實(shí)現(xiàn)類。

3、假如采用了這種模式,業(yè)務(wù)邏輯更加清晰,增強(qiáng)代碼可讀性,擴(kuò)展性,可維護(hù)性。

4、接口和實(shí)現(xiàn)分離,適合團(tuán)隊(duì)協(xié)作開發(fā)。

5、實(shí)現(xiàn)松散耦合的系統(tǒng),便于以后升級(jí),擴(kuò)展。

Java接口能實(shí)現(xiàn)什么功能呢

在Java語言規(guī)范中,一個(gè)方法的特征僅包括方法的名字,參數(shù)的數(shù)目和種類,而不包括方法的返回類型,參數(shù)的名字以及所拋出來的異常。在Java編譯器檢查方法的重載時(shí),會(huì)根據(jù)這些條件判斷兩個(gè)方法是否是重載方法。但在Java編譯器檢查方法的置換時(shí),則會(huì)進(jìn)一步檢查兩個(gè)方法(分處超類型和子類型)的返還類型和拋出的異常是否相同。

Java接口本身沒有任何實(shí)現(xiàn),因?yàn)镴ava接口不涉及表象,而只描述public行為,所以Java接口比Java抽象類更抽象化。但是接口不是類,不能使用new 運(yùn)算符實(shí)例化一個(gè)接口。

如:

x=new comparable(……);//這個(gè)是錯(cuò)誤來的。

但是可以聲明接口變量

Comparable x; //這是允許的。

Java接口的方法只能是抽象的和公開的,Java接口不能有構(gòu)造器,Java接口可以有public、靜態(tài)的和final屬性。即接口中的屬性可以定義為

public static final int value=5;

接口把方法的特征和方法的實(shí)現(xiàn)分割開來。這種分割體現(xiàn)在接口常常代表一個(gè)角色,它包裝與該角色相關(guān)的操作和屬性,而實(shí)現(xiàn)這個(gè)接口的類便是扮演這個(gè)角色的演員。一個(gè)角色由不同的演員來演,而不同的演員之間除了扮演一個(gè)共同的角色之外,并不要求其它的共同之處。

接口的定義方式如下

接口的主體包含著抽象方法,但所有方法在接口內(nèi)(定義上)都是抽象(Abstract)方法,所以abstract的關(guān)鍵字在接口內(nèi)則不被需要。由于接口代表著一個(gè)對(duì)外行為的集合,所以任何方法在接口內(nèi)都是public(公開的)。

Java為什么要使用接口_java接口怎么使用

接口內(nèi)的成員皆為靜態(tài)(static)、final及公開(public),反之,他們可以成為任何類或接口的類型

接口的使用解決類只能單繼承的問題,因?yàn)橐粋€(gè)類可以實(shí)現(xiàn)多個(gè)接口。

那么Java中要如何去實(shí)現(xiàn)一個(gè)接口并且在實(shí)現(xiàn)他的子類中調(diào)用接口中的方法呢?

接口的實(shí)現(xiàn)方式

Java為什么要使用接口_java接口怎么使用

如果一個(gè)類實(shí)現(xiàn)了一個(gè)接口,而沒有實(shí)現(xiàn)接口的所有方法,則它必須被標(biāo)注為abstract(抽象類)。一個(gè)抽象類的子類必須實(shí)現(xiàn)它未完成的方法,假如該項(xiàng)子類仍不會(huì)實(shí)現(xiàn)接口的所有方法,那么該項(xiàng)子類依然需要被標(biāo)注為abstract。

接口通常被使用在Java編程語言,用來做回調(diào)函數(shù)使用[2] 。Java并不允許方法作為參數(shù)傳遞使用,因此,其中一個(gè)解決辦法則是可以定義一個(gè)接口,把這個(gè)接口當(dāng)成方法的參數(shù),以此來使用該項(xiàng)對(duì)象的方法簽名。

子接口[編輯]

接口可以被延伸為數(shù)個(gè)不同的接口,可以使用上述所描述的方法,舉例來說:

Java為什么要使用接口_java接口怎么使用

以上的程序片段是合法定義的子接口,與類不同的是,接口允許多重繼承,而Predator 及 Venomous 可能定義或是繼承相同的方法,比如說kill(Prey prey),當(dāng)一個(gè)類實(shí)現(xiàn)VenomousPredator的時(shí)候,它將同時(shí)實(shí)現(xiàn)這兩種方法。

有些泛用的Java接口可供參考:

Comparable

擁有一個(gè)方法compareTo,用以描述兩個(gè)對(duì)象是否相等,或是其中一個(gè)對(duì)象大于另外一個(gè)對(duì)象。泛型允許已經(jīng)實(shí)現(xiàn)的類,其對(duì)象可以用來互相比較。

Serializable 是一個(gè)marker interface 沒有任何接口或是字段,僅有一個(gè)空的主體,它被用來表示一個(gè)類可以被序列化。它的Javadoc描述了他是如何運(yùn)作,而且不需要被強(qiáng)制編程。

為了能夠向上轉(zhuǎn)型為多個(gè)基類型。即利用接口的多實(shí)現(xiàn),可向上轉(zhuǎn)型為多個(gè)接口基類型。

java接口的使用

java接口或抽象類都可以使用向上轉(zhuǎn)型,它們用的都是java運(yùn)行時(shí)多態(tài)技術(shù),或者叫運(yùn)行期綁定技術(shù)。下面是一個(gè)java接口的普遍用法:

Java為什么要使用接口_java接口怎么使用

結(jié)果:

I’m a student.

I’m a teacher.

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8448

    瀏覽量

    150725
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2952

    瀏覽量

    104487
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    JAVA操作英創(chuàng)主板SPI接口簡介

    訪問硬件資源,英創(chuàng)提供了Java硬件支持包,主要支持的工控接口有:以太網(wǎng)、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要介紹使用Java語言調(diào)用英創(chuàng)Java硬件支持包,操作
    發(fā)表于 10-20 13:16

    SqlServer觸發(fā)器調(diào)用java接口的方法

    SqlServer觸發(fā)器調(diào)用java接口
    發(fā)表于 06-15 09:53

    基于JAVA的ICQ系統(tǒng)的源代碼

    基于JAVA的ICQ系統(tǒng) 服務(wù)器與客戶間通過套接口Socket(TCP)連接。在java中使用套接口相當(dāng)簡單,Java API為處理套
    發(fā)表于 03-10 13:39 ?13次下載

    JAVA制作的ICQ系統(tǒng)

    JAVA制作的ICQ系統(tǒng)   基于JAVA的ICQ系統(tǒng)服務(wù)器與客戶間通過套接口Socket(TCP)連接
    發(fā)表于 03-29 14:12 ?21次下載

    Java中包、接口與異常處理(exception) 實(shí)驗(yàn)

    實(shí)驗(yàn) 4 包、接口與異常處理(exception) 一、實(shí)驗(yàn)?zāi)康?    了解 Java 中包(package)、接口(interface)和異常處理(exception)的作用,掌握包、
    發(fā)表于 09-23 19:00 ?1180次閱讀

    McObject發(fā)布用于eXtremeDB的Java本地接口

    McObject發(fā)布用于eXtremeDB的Java本地接口  實(shí)時(shí)應(yīng)用數(shù)據(jù)庫系統(tǒng)的創(chuàng)新廠商McObject公司發(fā)布了用于其嵌入式數(shù)據(jù)庫產(chǎn)品eXtremeDB™的Java本地接口
    發(fā)表于 02-01 13:43 ?891次閱讀

    接口、內(nèi)部類和Java API基礎(chǔ)

    理解接口的作用,理解接口和實(shí)現(xiàn)接口的類的關(guān)系,掌握聲明接口、一個(gè)類實(shí)現(xiàn)多個(gè)接口的聲明和使用方法。理解內(nèi)嵌類型的概念,掌握聲明內(nèi)部類的方法。熟
    發(fā)表于 11-23 11:52 ?0次下載

    java動(dòng)態(tài)代理機(jī)制詳解的類和接口描述

    的我們的功能,我們更需要學(xué)習(xí)的是其底層是怎么樣的一個(gè)原理,而AOP的原理就是java的動(dòng)態(tài)代理機(jī)制,所以本篇隨筆就是對(duì)java的動(dòng)態(tài)機(jī)制進(jìn)行一個(gè)回顧。 在java的動(dòng)態(tài)代理機(jī)制中,有兩個(gè)重要的類或
    發(fā)表于 09-28 13:33 ?0次下載

    Java學(xué)習(xí)路線教程之Java新手必須學(xué)習(xí)那21個(gè)技術(shù)點(diǎn)詳細(xì)資料說明

    Java中調(diào)用本地接口方法,一般用于C/C++代碼的調(diào)用。需要注意的是在java中加載so/dll文件的路徑問題,本身調(diào)用接口并不復(fù)雜,但是經(jīng)常在是否加載了所需的本地
    發(fā)表于 12-19 15:23 ?19次下載

    基于Java接口快速開發(fā)框架

    作者丨編碼磚家 來源丨h(huán)ttp://adkx.net/w5m4s Part1簡介 magic-api 是一個(gè)基于Java接口快速開發(fā)框架,編寫接口將通過magic-api提供的UI界面完成,自動(dòng)
    的頭像 發(fā)表于 09-10 09:36 ?3685次閱讀

    基于Java接口快速開發(fā)框架——magic-api

    magic-api 是一個(gè)基于Java接口快速開發(fā)框架,編寫接口將通過magic-api提供的UI界面完成,自動(dòng)映射為HTTP接口,無需定義Controller、Service、Da
    發(fā)表于 07-19 11:42 ?865次閱讀
    基于<b class='flag-5'>Java</b>的<b class='flag-5'>接口</b>快速開發(fā)框架——magic-api

    Java序列化怎么使用

    java.io.Serializable 接口 public interface Serializable {} Serializable 接口沒有定義任何的方法,是一個(gè)空接口。為
    的頭像 發(fā)表于 10-10 14:19 ?413次閱讀

    java接口和抽象類的區(qū)別

    Java中的接口(Interface)和抽象類(Abstract class)都是抽象的概念,它們可以用來定義類的行為和特征。雖然它們具有一些相似之處,但也存在一些重要的區(qū)別。本文將詳盡介紹Java
    的頭像 發(fā)表于 11-21 09:45 ?498次閱讀

    Java中抽象類和接口的介紹

    Java是一種面向?qū)ο蟮木幊陶Z言,提供了抽象類和接口兩種機(jī)制來幫助開發(fā)人員組織和管理代碼。本文將詳細(xì)介紹Java語言中抽象類和接口的概念、特點(diǎn)、使用方式以及它們之間的區(qū)別和聯(lián)系。 抽象
    的頭像 發(fā)表于 11-21 09:47 ?429次閱讀

    java接口是特殊的抽象類嗎

    Java接口是一種特殊的抽象類嗎? 在Java編程語言中,接口(interface)與抽象類(abstract class)是兩種不同的概念,盡管它們之間存在一些相似之處,但在設(shè)計(jì)和使
    的頭像 發(fā)表于 11-21 10:07 ?587次閱讀