参考链接
What Is an Interface? (The Java™ Tutorials > Learning the Java Language > Object-Oriented Programming Concepts).
IInterface | Android 开发者 | Android Developers.
InterfaceType - Java 11中文版 - API参考文档.
先看可以实现的功能,如果不满足不必继续往下看
Android 利用 interface 实现变量监听
功能
在调用变量set方法时触发回调函数
设计思路
利用java interface接口实现回调函数,当变量值改变触发相应操作
变量封装成类 => 在类中创建interface接口 => 声明interface接口 => 设置interface回调 => set中调用
设计步骤
将需要监听的变量封装到类Order中,并设置get set
public class Order {
private static String flage;
public static String getFlage() {
return flage;
}
public static void setFlage(String flage) {
Order.flage = flage;
}
}
在Order中创建interface类OnChangeListener并声明该接口,创建setOnChangeListener方法
public interface OnChangeListener { // 创建interface类
void onChange(); // 值改变
}
private static OnChangeListener onChangeListener; // 声明interface接口
public static void setOnChangeListener(OnChangeListener onChange){ // 创建setListener方法
onChangeListener = onChange;
}
在set中调用该接口
public static void setFlage(String flage) {
Order.flage = flage;
onChangeListener.onChange();
}
用法
最终Order类是这样的
public class Order {
public interface OnChangeListener { // 创建interface类
void onChange(); // 值改变
}
private static OnChangeListener onChangeListener; // 声明interface接口
public static void setOnChangeListener(OnChangeListener onChange){ // 创建setListener方法
onChangeListener = onChange;
}
private static String flage;
public static String getFlage() {
return flage;
}
public static void setFlage(String flage) {
Order.flage = flage;
onChangeListener.onChange();
}
}
设置监听函数
Order.setOnChangeListener(new Order.OnChangeListener() {
@Override
public void onChange() {
// doSomthing...
// 值改变需要进行的事务
}
});
设置完后只需要执行java Order.setFlage("1");
即可触发doSomthing…事件
interface方法
java是面向对象语言,在设计之初就摒弃了多重继承的概念。
没有了多重继承,就无法调用不同父类方法,不方便。
有了interface接口,就可以实现类似多重继承的效果。
在本质上讲,interface是抽象方法和常量定义的集合。
接口中的所有成员变量都默认是由public static final修饰的。
接口中的所有方法都默认是由public abstract修饰的。
接口没有构造方法。
要实现一个接口,必须实现该接口中所有方法。
一个类可以实现多种接口。
一个接也可以实现多种接口。
接口实现类也可以存在多态性,这点与继承类似。
接口也可以使用extends关键字,接口继承接口。