Java中的接口的使用:
假设你设计了一个使用Java编写的GUI(图形用户接口)框架, 在这个框架里吗你有一个控件叫做按钮
一个按钮被点击以后当然会有所反应但是这个反应导致的后果是不确定的, 因为需要未来使用这个框架的开发者去决定点击这个按钮点击后究竟是干嘛, 是调转到下一个页面 还是 打开新的页面 还是 调用浏览器打开url 等等, 按照传统思维有多少个需求就有多少个方法去实现, 但是需求是千奇百怪的, 是无穷无尽, 是滔滔不绝的,不可能去把所有情况封装成方法, 而且作为一个框架需要保证其鲁棒性 不能限制开发者的手脚.
这个时候 接口 的作用就出现了
接口 中只定义没有方法体(逻辑内容)抽象方法和静态变量例如这个点击事件接口:
interface Click{
public static int TEST_NUM = 1;
public abstract void OnClick_Func();
}
现在假设我们设计了一个按钮类:
class Button{
private Click click;
......
private void NowClick(){
click.OnClick_Func();
}
public void setClick_Func(Click click){
this.click = click;
}
......
}
可以看到设计的Button类中已经有部分逻辑; 假设当按钮被按下的时候就会执行NowClick()方法NowClick()调用了OnClick_Func()方法OnClick_Func()中的参数就是接口Click但是Click中的方法没有逻辑, 这就是巧妙之处Click中的方法需要使用接口的人去填充:
public class main {
public static void main(String[] args) {
Button button = new Button();
button.setClick_Func(new Click() {
@Override
public void OnClick_Func() {
/*填充的逻辑*/
}
});
}
}
可以看到这就是对一个接口的匿名实现通过这种方式在需要以接口为参数的地方快速的实现了接口的功能.
以上便是一个接口在Java编程中的实际应用