Java

来源:互联网 发布:电视直播 for mac 编辑:程序博客网 时间:2024/06/06 15:26

作为困扰了太久的两个概念以及它们的用法,下面简单分析并介绍

抽象类:java中,包含抽象方法的类为抽象类,同时,抽象类中也可以包含其他的非抽象方法,抽象类里的abstract方法必须要在子类中进行继承实现;另外:抽象类不可以初始化对象

接口:接口相比于抽象类,更多是行为上的实现,即不同的多个类,都可以实现同一个接口的动作,这里写图片描述



说到接口,必须不能不说的另一个概念是Android里的Listener概念,也可以称为回调或者监听,回调是指两个类之间的关系,接口即是为两个类实现回调的一个桥梁,无论是接口的回调,还是监听,都是通过两个类来做的。
详情可参见第二个参考资料,内容大概如:
(1)类A实现了接口I,类A作为回调行为的执行者
(2)类B持有类A对象的成员,或者类B中有函数,是以类A为参数


回调的流程为:
(1):类A实现了接口的内容,即待调用的实现部分;
(2):类A中将自身作为成员变量(函数参数)传递给类B;
(3):通过(1)和(2),已经有了等待回调的内容,在类A中,以及去发起回调的持有者,即类B
通过这个流程,可以发现,所谓的回调,不外乎就是通过接口去定义了一个行为,这个定义行为的内容也是在一个类A里,然后这个类A将自身(包含接口定义的行为)传递给类B,最后类B直接启用了类A里的接口定义的行为,从而实现了回调



再回来看Android里的Listener机制,首先Activity或者单独使用类去实现了View里的Listener接口:即按键出发的行为,然后传给了View里面,不管是Button还是其他的控件,最后在点击按键的时候,是在View的按键事件里调回给了Activity里的函数



另外的一个疑问是接口里的函数必须都实现,那是否在实现回调的时候,需要有多个类呢,解决接口中多个函数都需要继承的方法,就是在类中建立接口,可以分散接口的多个地方创建于继承的繁琐

参考资料:
http://www.importnew.com/18780.html
http://blog.csdn.net/xiaanming/article/details/8703708/

原创粉丝点击