接口回调
egg: a:demo类(调用打印) b:打印类 c:打印接口,其中有抽象方法suc()和fail() a调用b的打印方法时传入c接口的实现类,b的这个打印方法中在合适的位置去调用a传入的接口的对应方法
1)定义接口: 定义一个接口、定义其中的抽象方法、抽象方法含有参数(被传递的数据);
2)编写回调方法: 在定义接口的类中,编写用户回调的方法,要传递一个接口对象实例,让别的类去实现。(相当于为接口成员变量赋值)
3)为抽象方法赋值: 获取一个全局的接口成员变量,在某个事件中使用接口成员变量调用接口中的方法,并且为抽象方法中的参数赋值。(这一步可以在回调方法中实现)
在另一个页面,在合适的时机,创建此类的实例,调用类中的回调方法,为接口对象赋值this,即可实现回调。
需要一个接口的实现类:
1)让当前Activity实现接口,变成接口的实现类;
2)写一个类去实现接口,实现其中的抽象方法,然后在需要的地方创建一个接口实现类的子类对象
3)直接在当前位置使用匿名对象实现,创建一个接口实例。
回调原理:
接口调用自己的抽象方法,相当于接口的实现类调用实现类中重写的抽象方法;
接口中没有构造函数:
1)接口中是没有构造函数的,不能直接创建对象,只能由实现类创建对象;接口中的成员常量不需要进行初始化,所以不需要构造函数。
2)而抽象类是有构造方法的,为了给子类调用初始化抽象类中的成员变量。
接口的特点:
1)接口用关键字interface表示;类实现接口用implements表示。
2)接口不能实例化:那么,接口如何实例化呢?按照多态的方式,由具体的子类实例化。其实这也是多态的一种,接口多态。
3)接口的子类:要么是抽象类,要么重写接口中的所有抽象方法。
接口中的成员:
成员变量:只能是常量 默认修饰符 public static final(不能被修改)
构造方法:没有,因为接口主要是扩展功能的,而没有具体存在
成员方法:只能是抽象方法 默认修饰符 public abstract(可以省略)
类与类,类与接口以及接口与接口的关系:
类与类: 继承关系,只能单继承,但是可以多层继承
类与接口:实现关系,可以多实现,还可以在继承一个类的同时实现多个接口。
egg: a:demo类(调用打印) b:打印类 c:打印接口,其中有抽象方法suc()和fail() a调用b的打印方法时传入c接口的实现类,b的这个打印方法中在合适的位置去调用a传入的接口的对应方法
1)定义接口: 定义一个接口、定义其中的抽象方法、抽象方法含有参数(被传递的数据);
2)编写回调方法: 在定义接口的类中,编写用户回调的方法,要传递一个接口对象实例,让别的类去实现。(相当于为接口成员变量赋值)
3)为抽象方法赋值: 获取一个全局的接口成员变量,在某个事件中使用接口成员变量调用接口中的方法,并且为抽象方法中的参数赋值。(这一步可以在回调方法中实现)
在另一个页面,在合适的时机,创建此类的实例,调用类中的回调方法,为接口对象赋值this,即可实现回调。
需要一个接口的实现类:
1)让当前Activity实现接口,变成接口的实现类;
2)写一个类去实现接口,实现其中的抽象方法,然后在需要的地方创建一个接口实现类的子类对象
3)直接在当前位置使用匿名对象实现,创建一个接口实例。
回调原理:
接口调用自己的抽象方法,相当于接口的实现类调用实现类中重写的抽象方法;
接口中没有构造函数:
1)接口中是没有构造函数的,不能直接创建对象,只能由实现类创建对象;接口中的成员常量不需要进行初始化,所以不需要构造函数。
2)而抽象类是有构造方法的,为了给子类调用初始化抽象类中的成员变量。
接口的特点:
1)接口用关键字interface表示;类实现接口用implements表示。
2)接口不能实例化:那么,接口如何实例化呢?按照多态的方式,由具体的子类实例化。其实这也是多态的一种,接口多态。
3)接口的子类:要么是抽象类,要么重写接口中的所有抽象方法。
接口中的成员:
成员变量:只能是常量 默认修饰符 public static final(不能被修改)
构造方法:没有,因为接口主要是扩展功能的,而没有具体存在
成员方法:只能是抽象方法 默认修饰符 public abstract(可以省略)
类与类,类与接口以及接口与接口的关系:
类与类: 继承关系,只能单继承,但是可以多层继承
类与接口:实现关系,可以多实现,还可以在继承一个类的同时实现多个接口。
接口与接口:继承关系,可以单继承,也可以多继承。
https://blog.csdn.net/qq379454816/article/details/51546638