接口回调演示代码-我自己的理解,可能不准确

接口回调演示代码-我自己的理解,可能不准确,准确的含义我也不清楚


下面是接口:

package com.cs.callback;


public interface IBankTransport {
	public double getTransportRate();//获取转账费率的值,由实现类自己去实现。
}


下面是调用者:

package com.cs.callback;

/**
 * 接口回调的演示代码,
 * @author Administrator
 *
 */
public class BankTransport {
	/**
	 * 这个方法的参数是个接口,方法的实现里面调用了接口的getTransportRate(),
	 * 这个接口的方法里面执行了什么,现在还不知道,只有在调用transportMoney()方法的时候,
	 * 要传递参数给它的时候,调用者要去实现接口的getTransportRate()方法,然后到运行时候才知道确切做了什么
	 * @param ibt
	 */
	public void transportMoney(IBankTransport ibt){
		System.out.println("银行转账");
		double rate = ibt.getTransportRate();
		System.out.println("转账费率是:"+rate);
	}
	
	public static void main(String[] args) {
		BankTransport b = new BankTransport();
		//这里直接创建了接口的一个匿名类,也可以另外创建一个类来实现这个接口然后再创建类的实例
		IBankTransport ib = new IBankTransport(){
			//费率的值由调用的时候决定,它是多少完全由调用者决定,这个形式就是接口回调
			
			public double getTransportRate() {
				return 1.25d;
			}
		};
		
		//调用这方法时,即要去取出费率的值时,就要往前面刚刚定义的取费率的方法,在形式上就像是代码往回执行了,回过头来调用方法了,所以叫回调
		b.transportMoney(ib);
	}
}

接口回调在形式上,就是定义一个方法(叫它做A方法),该A方法需要的参数是个接口,A方法的代码里面就是调用接口的某个方法即可,其他代码行自己写,

参数一定要是个接口,A方法必须要调用到接口的一个或多个方法,如果完全不使用到接口里的任何方法,就没有接口回调的说法了,直接给个null就可以了,

反正又不被使用的。

剩下的就是调用者需要使用刚刚定义的这个A方法时,它要为A方法提供一个接口的实现类过来,实现类可以事先定义好,也可以在调用者调用前创建个匿名的内部类,

然后实现接口的所有方法。在执行A方法时,A方法里调用了接口的某方法,也就是执行实现类的同名方法,此时就好像代码往回走了,回过头来调用实现类所定义的方法,

执行完毕A方法后,就继续执行A方法下面的其他代码行。

接口回调大概就是这样一个过程,用在什么地方,暂时还没有想到,因为我很少用到。现在的这个例子只是学习的时候,为了学习回调函数而去做的,没有什么实际例子。

我觉得可能是在某些方法需要在调用时才去确定执行的内容,或者执行的内容完全由调用者来决定的时候会使用到接口回调。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值