如果準(zhǔn)備給一個(gè)方法的參數(shù)傳遞一個(gè)數(shù)值,你可能希望該方法的參數(shù)的類型是double類型,這樣一來(lái)就可以向該參數(shù)傳遞byte、int、long、float和double類型的數(shù)據(jù)。
如果一個(gè)方法的參數(shù)是接口類型,我們就可以將任何實(shí)現(xiàn)該接口的類的實(shí)例的引用傳遞給該接口參數(shù),那么接口參數(shù)就可以回調(diào)類實(shí)現(xiàn)的接口方法。
例如:
interface SpeakHello { void speakHello(); } class Chinese implements SpeakHello { public void speakHello() { System.out.println("中國(guó)人習(xí)慣問(wèn)候語(yǔ):你好,吃飯了嗎? "); } } class English implements SpeakHello { public void speakHello() { System.out.println("英國(guó)人習(xí)慣問(wèn)候語(yǔ):你好,天氣不錯(cuò)!"); } } class KindHello { public void lookHello(SpeakHello hello) { //接口類型參數(shù) hello.speakHello(); //接口回調(diào) } } public class Main { public static void main(String args[]) { KindHello kindHello = new KindHello(); kindHello.lookHello(new Chinese()); kindHello.lookHello(new English()); } }
運(yùn)行結(jié)果如下:
中國(guó)人習(xí)慣問(wèn)候語(yǔ):你好,吃飯了嗎? 英國(guó)人習(xí)慣問(wèn)候語(yǔ):你好,天氣不錯(cuò)!
注意:如果源文件再增加若干個(gè)類似Chinese和English的類,KindHello類不需要做任何修改。
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫(xiě)的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫(xiě)出一個(gè)爬蟲(chóng)的Python編程課程
只會(huì)語(yǔ)法寫(xiě)不出代碼?手把手帶你寫(xiě)100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門(mén)課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程