W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
接口指定對(duì)象必須提供的協(xié)議。
類可以提供接口的抽象方法的部分實(shí)現(xiàn),并且在這種情況下,類必須將自身聲明為抽象。
實(shí)現(xiàn)接口的類使用“implements”子句來(lái)指定接口的名稱。
“實(shí)現(xiàn)”子句由關(guān)鍵字implements,后跟逗號(hào)分隔的接口類型列表組成。
一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。
實(shí)現(xiàn)接口的類聲明的一般語(yǔ)法如下:
<modifiers> class <class-Name> implements <comma-separated-list-of-interfaces> { // Class body goes here }
假設(shè)有一個(gè)Circle類。
public class Circle implements Shape { void draw(){ System.out.println("draw circle"); } }
實(shí)現(xiàn)接口的類必須重寫(xiě)以實(shí)現(xiàn)接口中聲明的所有抽象方法。否則,類必須聲明為abstract。
接口的默認(rèn)方法也由實(shí)現(xiàn)類繼承。
植入類可以選擇不需要重寫(xiě)默認(rèn)方法。
接口中的靜態(tài)方法不會(huì)被實(shí)現(xiàn)類繼承。
下面的代碼定義了兩種引用類型,一種來(lái)自Circle類,另一種來(lái)自接口類型。
Circle c = new Circle(); Shape shape = new Circle();
變量c是Circle類型。它指的是Circle對(duì)象。
第二個(gè)賦值也是有效的,因?yàn)镃ircle類實(shí)現(xiàn)了Shape接口,而Circle類的每個(gè)對(duì)象也都是Shape類型。
當(dāng)一個(gè)類完全實(shí)現(xiàn)了一個(gè)接口時(shí),它為所實(shí)現(xiàn)的接口的所有抽象方法提供一個(gè)實(shí)現(xiàn)。
接口中的方法聲明包括方法的約束。例如,方法聲明中的throws子句是??方法的約束。
import java.io.IOException; interface Shape { void draw(double amount) throws IOException; } class Main implements Shape{ @Override public void draw(double amount) { // TODO Auto-generated method stub } }
Main的代碼是有效的,即使它丟棄了throws子句。當(dāng)類覆蓋接口方法時(shí),允許刪除約束異常。
如果我們使用Shape類型,我們必須處理IOException。
import java.io.IOException; interface Shape { void draw(double amount) throws IOException; } class Main implements Shape{ @Override public void draw(double amount) { // TODO Auto-generated method stub } public void anotherMethod(){ Shape s = new Main(); try { s.draw(0); } catch (IOException e) { e.printStackTrace(); } draw(0); } }
一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。類實(shí)現(xiàn)的所有接口都在類聲明中的關(guān)鍵字implements之后列出。
通過(guò)實(shí)現(xiàn)多個(gè)接口,類同意為所有接口中的所有抽象方法提供實(shí)現(xiàn)。
interface Adder { int add(int n1, int n2); } interface Subtractor { int subtract(int n1, int n2); } class Main implements Adder, Subtractor { public int add(int n1, int n2) { return n1 + n2; } public int subtract(int n1, int n2) { return n1 - n2; } }
類不必為所有方法提供實(shí)現(xiàn)。
如果一個(gè)類不提供接口的完全實(shí)現(xiàn),它必須聲明為abstract。
interface Calculator { int add(int n1, int n2); int subtract(int n1, int n2); } abstract class Main implements Calculator{ public int add(int n1, int n2) { return n1 + n2; } }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: