當前位置:首頁 » 廢水回用 » java介面回調可以用類替代嗎

java介面回調可以用類替代嗎

發布時間: 2020-12-14 15:05:49

㈠ java 介面回調例子怎麼像抽介面

(1)先定義一個介面

1 package JieKouHuiDiao;2 //定義一個介面3 public interface JieKou {4 public void show();5 }

(2)定義一個Boss類實現介面

package JieKouHuiDiao;public class Test {public static void main(String[] args) {
Employee e=new Employee(); //需要調用的時候先注冊,傳入Boss類型對象和員工參數
Employee e1=e.zhuce(new Boss(),e);
e1.dosomething();
}
}

㈡ java中的介面回調與觀察者模式有什麼不同之處

介面回調, 是Java 多態的一種體現, 可以把使用某一介面的實現類創建的對象的引用, 賦給內該介面容聲明的介面變數中, 那麼該介面變數就可以調用被實現的介面中的方法, 當介面變數調用被類實現的介面中的方法時,就是通知相應的對象調用介面的方法.

觀察者模式, 是將觀察者和被觀察的對象分離開, 當被觀察的對象產生一定變化的時候, 觀察者就會根據哪裡產生的變化, 產生了變化, 而進行相應的處理.
大部分觀察著模式是用介面回調的方法來實現的.

前者是一種體現, 後者是一種用前者實現的模式, 相當於後者調用前者, 他們兩個沒有可以比較的地方

我還真聽話...

㈢ java介面回調 參數的類型不兼容

public double computeArea()看這里 返回值是專屬double的

public class Jiekou {
public static void main() {
mianji pp = new mianji ();
double result;
result = pp.jisuan(new circle(2));
System.out.println(result);
}
}

class mianji { public double jisuan(computeArea a) {
return a.computeArea();
}
}

㈣ Java中什麼是介面回調

什麼是介面回調?1.介面回調是什麼[2]?介面回調是指:可以把使用某一介面的類創建的對象的引用賦給該介面聲明的介面變數,那麼該介面變數就可以調用被類實現的介面的方法。實際上,當介面變數調用被類實現的介面中的方法時,就是通知相應的對象調用介面的方法,這一過程稱為對象功能的介面回調。看下面示例。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(); //實例化,介面變數中存放對象的引用a.peopleList(); //介面回調a=new Teacher(); //實例化,介面變數中存放對象的引用a.peopleList(); //介面回調}}結果:I』m a student.I』m a teacher.再來看看向上轉型(upcasting)的概念。 2.什麼是向上轉型[1]?Shape s=new Circle();這里,創建了一個Circle對象,並把得到的引用立即賦值給Shape。通過繼承,Circle就是一種Shape。假設你調用基類方法(它已在導出類中被覆蓋):s.draw();由於後期綁定(多態),將會正確調用Circle.draw()方法。 3.向上轉型與介面回調的區別看似向上轉型和介面回調是一回事。看下面兩句話,均出自Thinking in Java。使用介面的核心原因:為了能夠向上轉型為多個基類型[1]。即利用介面的多實現,可向上轉型為多個介面基類型(具體見《抽象與介面》章節6)。從實現了某介面的對象,得到對此介面的引用,與向上轉型為這個對象的基類,實質上效果是一樣的。(此句摘自Thinking in Java 3rd 介面與內部類一章)所以,我認為,這兩個概念是從兩個方面來解釋一個行為。介面回調的概念,強調使用介面來實現回調對象方法使用權的功能(下一章節詳細分析)。而向上轉型則牽涉到多態和運行期綁定的范疇。 4.用 Java 介面實現回調函數的等價功能熟悉 MS-Windows 和 X Window System 事件驅動編程模型的開發人員,習慣於傳遞在某種事件發生時調用(即「回調」)的函數指針。Java 的面向對象模型目前並不支持方法指針,Java 的介面支持提供了一種獲得回調的等價功能的機制。其技巧就是:定義一個簡單介面,並在該介面中聲明我們要調用的方法。假定我們希望在某個事件發生時得到通知。我們可以定義一個介面:InterestingEvent.javapackage org.zj.sample;public interface InterestingEvent { public void interestingEvent ();}這使得我們可以控制實現該介面的類的任何對象。因此,我們不必關心任何外部類型信息。發出事件信號的類必須等待實現了 InterestingEvent 介面的對象,並在適當時候調用 interestingEvent() 方法。EventNotifier.javapackage org.zj.sample;public class EventNotifier { private InterestingEvent ie; private boolean somethingHappened; public EventNotifier(InterestingEvent event) { ie = event; // 保存事件對象以備後用。 somethingHappened = false; // 還沒有要報告的事件。 } public void doWork() { if (somethingHappened) { // 檢查設置的謂詞。 ie.interestingEvent();// 通過調用介面的這個方法發出事件信號。 } } public void setHappened(){//設置謂詞。 somethingHappened=true; }}在上例中,使用 somethingHappened 謂詞來跟蹤是否應觸發事件。希望接收事件通知的代碼必須實現 InterestingEvent 介面,並將自身引用傳遞給事件通知程序。CallMe.javapackage org.zj.sample;public class CallMe implements InterestingEvent { @SuppressWarnings("unused") private EventNotifier en; public CallMe() { // 注意 EventNotifier (InterestingEvent event),應該傳遞一個介面類型。 // 而下面將this,即實現了InterestingEvent介面的CallMe實例傳遞給//EventNotifier。也就是所謂的介面回調了。 en = new EventNotifier(this); // 創建事件通知程序,並將自身引用傳遞給它。 } // 為事件定義實際的處理程序。

㈤ java的介面回調在什麼情況下使用這樣做有什麼好處

你用了Spring就知道 平時一般我們會把常用的方法封裝在介面裡面 ,然後去實現這個接回口 重寫裡面的方法答, 介面回調 說白了 就是通過介面 來調用介面裡面的方法 面向介面編程 介面.方法名,如果摟在學了Spring你就知道了 什麼叫介面編程了 裡面會大量使用 介面來調用方法,其實這個跟你講 還不是特別好講 這個就必須結合Spring框架來跟你講了 估計你要暈 等你學了SPring 我相信你就明白了 希望我的回答對摟主有所幫助 歡迎繼續提問 謝謝

㈥ java 回調函數或回調介面是一樣的嗎他們的定義分別是什麼他們各自在什麼場景下使用

所謂回調,就抄是客戶程序C調用服務程序S中的某個函數A,然後S又在某個時候反過來調用C中的某個函數B,對於C來說,這個B便叫做回調函數。例如Win32下的窗口過程函數就是一個典型的回調函數。一般說來,C不會自己調用B,C提供B的目的就是讓S來調用它,而且是C不得不提供。由於S並不知道C提供的B姓甚名誰,所以S會約定B的介面規范(函數原型),然後由C提前通過S的一個函數R告訴S自己將要使用B函數,這個過程稱為回調函數的注冊,R稱為注冊函數。Web Service以及Java的RMI都用到回調機制,可以訪問遠程伺服器程序。
同在一個系統裡面的時候可以不使用回調介面,因為知道如何回調。一般來說都是回調介面的,因為介面告訴你如何回調,但是如果你已經知道如何回調的時候,可以不實用介面。

㈦ 給個Java介面回調的例子

/**
* 回調介面
*/
interface TestTemplateCallBack {
Object doSomething();
}class Template2 { /**
* 執行業務邏輯的方法,參數類型為介面對象
*
* @param callBack:TestTemplateCallBack介面對象
*/
public void execute(TestTemplateCallBack callBack) {
try {
System.out.println("事務開始。。。");
System.out.println("開始執行業務邏輯。。。");
callBack.doSomething();
System.out.println("業務邏輯執行成功,提交事務");
} catch (Exception e) {
System.out.println("出現錯誤,回滾");
e.printStackTrace();
}
}
}public class TemplateTest2 {
public void insert(final String msg) {
Template2 t = new Template2();
// 匿名內部類重寫方法
t.execute(new TestTemplateCallBack() {
public Object doSomething() {
// 事務出錯代碼
// int i = 1 / 0;
System.out.println("插入數據:" + msg);
return null;
}
});
} public static void main(String[] args) {
TemplateTest2 t = new TemplateTest2();
t.insert("Hello");
}
}
在這里申明一個介面,裡面有個方法doSomething()。Template2 這個類中的execute()方法用來執行事務,其中有個參數:execute(TestTemplateCallBack callBack),參數類型為之前定義的介面對象,然後就可以利用這個對象來調用doSomething()方法。但是doSomething()方法具體的操作內容在哪呢?它在TemplateTest2的insert()方法裡面,這里在TemplateTest2類中定義一個insert()方法,接著申明一個Template2對象t,當執行t.execute()方法的時候,這時我們寫個匿名類來當傳入參數,這匿名類就是之前的介面,在匿名類中重寫doSomething()方法就可以實現具體操作了。實際的列子可以參考spring源碼中的JdbcTemplate類。

㈧ Java 的回調函數是不是 抽象函數(抽象類) 和 介面類 都可以實現

這個可以用啊,你在回調的時候實現一下就可以了,比如說介面

㈨ Java中什麼是介面回調

介面回調是指:可以把使用某一介面的類創建的對象的引用賦給該介面聲明的介面變數,那麼該介面變數就可以調用被類實現的介面的方法。實際上,當介面變數調用被類實現的介面中的方法時,就是通知相應的對象調用介面的方法,這一過程稱為對象功能的介面回調。看下面示例:

interfacePeople{
voidpeopleList();
}
classStudentimplementsPeople{
publicvoidpeopleList(){
System.out.println("I』mastudent.");
}
}
classTeacherimplementsPeople{
publicvoidpeopleList(){
System.out.println("I』mateacher.");
}
}
publicclassExample{
publicstaticvoidmain(Stringargs[]){
Peoplea;//聲明介面變數
a=newStudent();//實例化,介面變數中存放對象的引用
a.peopleList();//介面回調
a=newTeacher();//實例化,介面變數中存放對象的引用
a.peopleList();//介面回調
}
}
結果:
I』mastudent.
I』mateacher.

㈩ java上轉型對象和介面回調的區別 感覺這兩段代碼沒啥區別呀,幫忙解釋下謝謝

interface A1這是介面class a extends A1這是抽象類。

具體區別:網頁鏈接

抽象類(abstract class)

  • 定義:包含抽象方法的的類是abstract class

    用abstract關鍵字修飾

  • 作用:abstractclass是為了把相同的東西提取出來,即重用

  • 使用abstractclass語法規定

  • 語法

    備注

    抽象類定義用abstract關鍵字修飾 要通過子類進行實例化

    抽象類是不能被實例化的 要通過子類進行實例化

    子類必須重寫父類的所有抽象方法 抽象方法:聲明但卻未被實現的方法,用abstract關鍵字修飾

    含有抽象方法的類一定是抽象類,但是抽象類不一定含有抽象方法 無

    抽象類是用來被它的子類繼承的 關鍵字extends

    抽象類是在功能上的一個規定 無

    Interface

  • 定義:比abstract class更加抽象,是一種特殊的abstract class

    用Interface關鍵字修飾

  • 作用:Interface是為了把程序模塊進行固化的契約,是為了降低偶合

  • 使用Interface的語法規定

  • 語法

    備注

    介面定義用Interface關鍵字修飾

    介面中的所有方法都是抽象的 可以用abstract修飾,也可以省略

    介面中的方法必須是用public修飾,或不寫 但是不能被其他修飾符修飾

    介面中的屬性必須是全局常量 publicstaticfinal修飾

    抽象類是用來被它的子類實現的 關鍵字Implements

    抽象類是在結構上的一個規定 無

    介面不能被實例化 無

    子類實現介面時需要實現介面中的所有方法 若有一個未不實現,該子類就是抽象類abstractclass

熱點內容
丁度巴拉斯情人電影推薦 發布:2024-08-19 09:13:07 瀏覽:886
類似深水的露點電影 發布:2024-08-19 09:10:12 瀏覽:80
《消失的眼角膜》2電影 發布:2024-08-19 08:34:43 瀏覽:878
私人影院什麼電影好看 發布:2024-08-19 08:33:32 瀏覽:593
干 B 發布:2024-08-19 08:30:21 瀏覽:910
夜晚看片網站 發布:2024-08-19 08:20:59 瀏覽:440
台灣男同電影《越界》 發布:2024-08-19 08:04:35 瀏覽:290
看電影選座位追女孩 發布:2024-08-19 07:54:42 瀏覽:975
日本a級愛情 發布:2024-08-19 07:30:38 瀏覽:832
生活中的瑪麗類似電影 發布:2024-08-19 07:26:46 瀏覽:239