Dongle Java 基礎(四)之介面

2021-07-25 03:21:43 字數 2133 閱讀 8835

通過這次學習j2se,發現了很多之前不知道或從來沒注意的細節,而恰恰這些細節卻是關鍵所在呢,對以後實踐有著不可替代的意義。

之前,只知道介面只是用來實現的,而在深入的了解就是一問三不知了。這讓我對這次學習更印象深刻了,就如老師說過:「學習是反覆的,不是一蹴而就的」。

多個類可以實現相同的介面,乙個類也可以實現多個介面。拿**解釋吧:

inte***ce singer

inte***ce painter

class student implements singer 

public void study()

public string getname()

public void sing()

public void sleep()

}

class teacher implements singer,painter 

teacher(string name )

public void teach()

public void sing()

public void sleep()

public void paint()

public void eat()

}

上面有兩個介面,乙個是singer介面,另乙個是painter介面。

存在類student、teacher,這兩個都實現了singer介面:多個類可以實現同乙個介面。

類teacher實現了singer介面和painter介面:乙個類可以實現多個介面(介面實現用implements;繼承用extends)。

對於類實現介面,必須實現介面內定義的方法,而多重實現就是講多個介面內的方法都要實現。例如student必須實現singer介面中的sing()和sleep()兩個方法,而teacher必須實現singer和painter兩個介面中的sing()、sleep()、paint()和eat()四個方法。

執行結果如下:

介面之間也是可以繼承的:

inte***ce protectable 

inte***ce a extends protectable

介面繼承和類繼承是相似的,所以又說介面是一種特殊的抽象類(因為介面的方法只定義不實現)。那麼會給類實現產生什麼影響呢?

class hen implements a 

public void beprotected(){}

//此方法產生混淆,編譯失敗

//public void getmoney()

public double getmoney()

}

類hen實現介面a,相當於即實現介面a,又實現介面protectable。相當於乙個類實現了多個介面,只不過這兩個介面之間存在了繼承關係,那麼類就可以直接實現乙個介面便可以間接的實現了另乙個介面。

當如果方法相同(方法名、引數個數、引數型別、返回值都相同),編譯也會成功,證明兩個介面對於這個方法都可見。但是,如果兩個方法的返回值不相同,其它都相同,那麼編譯就會出錯,因為方法產生了混淆:

public inte***ce valuable 

inte***ce protectable

inte***ce a extends protectable

class hen implements a 

public void beprotected(){}

//此方法產生混淆,編譯失敗

public void getmoney()

public double getmoney()

}

編譯異常:

所以實現多個介面時一定要仔細注意方法問題哦!

Dongle Java 基礎(一)之輸出

今天在跟著敲例子的時候突然發現例子上面的輸出語句有點差別,然後就都試了試,感覺有必要整理一下。其中輸出語句目前我敲過的有兩種 system.out.print i system.out.println i 那麼這兩種輸出有什麼區別呢?輸出101 200內的質數 public class testfo...

typescript基礎知識(四)介面

在我的理解中,介面是用於對一系列方法 屬性定義一些標準化的內容,在typescript中體現為對型別的標準化,使用inte ce關鍵字來定義乙個介面 屬性介面針對於物件的屬性標準化 inte ce information function person info information void,a...

C 學習筆記之四 介面

關鍵字 inte ce 介面是乙個契約。規定了一組功能。1 介面不能包含實現,只能包含各種簽名 2 介面成員預設public並且無需再顯式新增public 3 實現介面的類必須實現介面的全部成員。4 針對同一介面的不同實現類可以採用不同方法實現介面的成員。可選 訪問修飾符 public 實現不侷限於...