日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JAVA接口回调

發(fā)布時(shí)間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA接口回调 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

接口回調(diào)是指:可以把使用實(shí)現(xiàn)了某一接口的類(lèi)創(chuàng)建的對(duì)象的引用賦給該接口聲明的接口變量,那么該接口變量就可以調(diào)用被類(lèi)實(shí)現(xiàn)的接口的方法。實(shí)際上,當(dāng)接口變量調(diào)用被類(lèi)實(shí)現(xiàn)的接口中的方法時(shí),就是通知相應(yīng)的對(duì)象調(diào)用接口的方法,這一過(guò)程稱(chēng)為對(duì)象功能的接口回調(diào)。看下面示例:


interface People {


? ? ?void peopleList();


}


class Student implements People {


? ? ?public void peopleList() {


? ? ? ? System.out.println(\"I’m a student.\");


? ? ?}


}


class Teacher implements People {


? ? ?public void peopleList() {


? ? ? ? System.out.println(\"I’m a teacher.\");


? ? ?}


}


public class Example {


? ? ?public static void main(String args[]) {


? ? ? ? People a; // 聲明接口變量


? ? ? ? a = new Student(); // 實(shí)例化,接口變量中存放對(duì)象的引用


? ? ? ? a.peopleList(); // 接口回調(diào)


? ? ? ? a = new Teacher(); // 實(shí)例化,接口變量中存放對(duì)象的引用


? ? ? ? a.peopleList(); // 接口回調(diào)


? ? ?}


}


結(jié)果:


I’m a student.


I’m a teacher.

向上轉(zhuǎn)型:

Shape s=new Circle();?

這里,創(chuàng)建了一個(gè)Circle對(duì)象,并把得到的引用立即賦值給Shape。通過(guò)繼承,Circle就是一種Shape。
假設(shè)你調(diào)用基類(lèi)方法(它已在導(dǎo)出類(lèi)中被覆蓋):
s.draw();?

由于后期綁定(多態(tài)),將會(huì)正確調(diào)用Circle.draw()方法。

?

從實(shí)現(xiàn)了某接口的對(duì)象,得到對(duì)此接口的引用,與向上轉(zhuǎn)型為這個(gè)對(duì)象的基類(lèi),實(shí)質(zhì)上效果是一樣的。這些對(duì)象都可以調(diào)用基類(lèi)型提供的方法,對(duì)于接口來(lái)說(shuō)就是回調(diào)接口中的方法,對(duì)于父類(lèi)來(lái)說(shuō)就是調(diào)用父類(lèi)的方法。當(dāng)然在向上轉(zhuǎn)型的情況下,還牽涉到子類(lèi)重寫(xiě)(Override)父類(lèi)方法的情形。

?

Java回調(diào)

chendq@startimes.com.cn

?

?????? 接口回調(diào):可以把使用實(shí)現(xiàn)了某一接口的類(lèi)創(chuàng)建的對(duì)象的引用賦給該接口聲明的接口變量,那么該接口變量就可以調(diào)用被類(lèi)實(shí)現(xiàn)的接口的方法。實(shí)際上,當(dāng)接口變量調(diào)用被類(lèi)實(shí)現(xiàn)的接口中的方法時(shí),就是通知相應(yīng)的對(duì)象調(diào)用接口的方法,這一過(guò)程稱(chēng)為對(duì)象功能的接口回調(diào)。

觀察者模式:是將觀察者和被觀察的對(duì)象分離開(kāi), 當(dāng)被觀察的對(duì)象產(chǎn)生一定變化的時(shí)候, 觀察者就會(huì)根據(jù)哪里產(chǎn)生的變化, 產(chǎn)生了變化, 而進(jìn)行相應(yīng)的處理.大部分觀察著模式是用接口回調(diào)的方法來(lái)實(shí)現(xiàn)的.

前者是一種體現(xiàn), 后者是一種用前者實(shí)現(xiàn)的模式, 相當(dāng)于后者調(diào)用前者, 他們兩個(gè)沒(méi)有可以比較的地方

?

接口回調(diào)的實(shí)例:

?

?

?

interface IPeople { void peopleList(); }

class Student implements IPeople {

?????? publicvoid peopleList(){ //doSomething… }

}

class Test {

?????? privateIPeople p;//聲明接口變量

?????? Test(IPeoplep){ this.p = p} //實(shí)例化,接口變量中存放對(duì)象的引用

?????? method(){

????????????? p.peopleList();? //接口回調(diào)

}

main(){

?????? IPeople p = new Student();

?????? new Test(p).method();

}

}

?

?

其他相關(guān)主題

1.內(nèi)部類(lèi):(Thinking InJava)每個(gè)內(nèi)部類(lèi)都能獨(dú)立地繼承自一個(gè)(接口的)實(shí)現(xiàn),所以無(wú)論外部類(lèi)是否已經(jīng)繼承了(接口的)實(shí)現(xiàn),對(duì)于內(nèi)部類(lèi)都沒(méi)有影響。內(nèi)部類(lèi)可以間接的有效地實(shí)現(xiàn)了“多重繼承”。即是說(shuō),內(nèi)部類(lèi)允許繼承多個(gè)非接口類(lèi)型(類(lèi)或抽象類(lèi))

Example:(抽象或具體的類(lèi),使用內(nèi)部類(lèi)實(shí)現(xiàn)多重繼承)

class D { }

abstract class E {? }

class Z extendsD {

??????? E makeE() return new E() { };}//匿名內(nèi)部類(lèi)

}

?

2.閉包:(Thinking InJava)是一個(gè)可調(diào)用的對(duì)象,它記錄了一些信息,這些信息來(lái)自創(chuàng)建它的作用域。與內(nèi)部類(lèi)概念相比較,可知,內(nèi)部類(lèi)是面向?qū)ο蟮拈]包。閉包(JavaEye)是具有閉合作用域的匿名函數(shù),是可以用作函數(shù)參數(shù)和方法參數(shù)的代碼塊。本質(zhì)上來(lái)說(shuō),一個(gè)閉包是一塊代碼,它們能作為參數(shù)傳遞給一個(gè)方法調(diào)用。

?

3.?


轉(zhuǎn)載于:https://www.cnblogs.com/lgh1992314/archive/2012/12/15/5835255.html

總結(jié)

以上是生活随笔為你收集整理的JAVA接口回调的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。