Java 中接口回调不一样的理解

最近在做Android recyclerview 封装,在做的点击事件的重写时候,也就是按照网上的方法套路了一遍,自己并没有深入理解。点击事件本质上其实就是接口回调。

对于接口回调,最近通过《thingk in java》一书中我得到了一个启示就是:接口是特殊的抽象类。

而抽象方法不过是特殊的方法而已啊。按照网上的接口回调模式和例子,我用普通的方法模拟了一遍,发现更加好理解了。例子如下:


运行结果为:


通过结果,我们可能会推断,person.whoAreYou(),调用方法可能是Person类中的getName,然后又走重写后的getName,其实不是,被调用的只有被重写的getName,之所以:my name is A,会被输出,是因为,重写的getName中的super.getName()调用父Person中的getName.正是由于Java中这继承初始化顺序的特性,导致了这样的结果,所以千万不要在父类的构造方法中使用可能会被子类重写的方法。


回到正题,我们再将普通的getName方法变为抽象方法(我们意图是,普通——抽象——接口),如下:


这里的输出结果:my name is B.其实写到这一步已经很接近我们平时所谓的接口回调了。执行person.whoAreYou(),这句代码,可以根据上面例子,认为whoAreYou()方法的getName()其实会去自动寻找子类的实现(重写)方法。


我们平时的接口回调是怎么的呢?如下:



这样接口就能实现回调,callback会自动调用他的实现类。跟上面的例子是不是很相似呢?

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 29,667评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,092评论 0 11
  • 下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题...
    独念白阅读 934评论 0 3
  • 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有多个类,但只能有一个publ...
    岳小川阅读 488评论 0 2
  • 时间还是一如既往的快,一不留神乐宝宝你已经半岁了。乐爸爸一直在忙着工作,忙着学习,忙着家务,却没有时间好好陪着你玩...
    davidpp阅读 217评论 0 1
  • homePageViewController.m下[homePageViewController reloadHo...
    Jalon阅读 254评论 0 0
  • 要像跳舞一样轻盈、飘逸,才算到了极致 杉木氹,瓦厂。 刘师傅回洪平时,交待了满缸很多事,并说在供窑门、做窑顶...
    生明阅读 203评论 0 0
  • 之前我写过一个文章《你找的用户需求是真的吗?》在文章我主要分析了,用马斯洛需求层次理论分析消费者对产品的产品需求,...
    昆plus阅读 336评论 4 2