java中接口的作用

来源:互联网 发布:前端书籍知乎 编辑:程序博客网 时间:2024/05/17 09:33

 在java中接口体现的很重要,大家可能都听过面向接口编程,那么今天讲讲接口以及接口的使用,

首先讲下抽象类,抽象类比普通的类差别在那呢?抽象类中有抽象方法,这就是最大的差距,因为抽象方法只声明方法,但没有具体实现,抽象类不能实例化,因为类实例化就成了对象,那么对象就可以调用方法,而抽象方法只有声明,所以调用无意义,从反面也可以推断抽象类不能实例化,但是抽象类可以有构造函数,因为它要为子类进行初始化,

Person.java

<span style="font-size:24px;">public abstract class Person {public Person() {System.out.println("我是父类的构造方法");}public abstract void show();}


Teacher.java 继承了Person

<span style="font-size:24px;">public class Teacher extends Person {public Teacher() {super();System.out.println("我是子类的构造方法");}@Overridepublic void show() {System.out.println("show--------------");}}</span>
<span style="font-size:24px;"></span>
<span style="font-size:24px;">Test.java测试类</span>
<span style="font-size:24px;">public class Test {public static void main(String[] args) {Teacher t = new Teacher();t.show();}}</span>
<span style="font-size:24px;">打印结果:</span>
<pre class="java" name="code"><span style="font-size:24px;">我是父类的构造方法我是子类的构造方法show--------------</span>

从结果我么也看出来了,现在讲下接口,接口可以看做一个特殊的抽象类,特殊在那呢?,因为接口的方法都是完全的抽象的,变量都是

常量,

接口的作用:

常用来讲接口是定义实现类的外观,就相当于一份契约,根据外部应用需要的功能,约定了实现类应该要实现的功能,

使用接口的好处:

只要接口不变,内部实现的变化就不会影响到外部应用,从而使系统更加灵活,具有更好的扩展性和可维护性!

现在用工厂模式来讲下接口的好处:

Api.java

<span style="font-size:24px;">public interface Api {void show();}</span>
<span style="font-size:24px;"></span>
<span style="font-size:24px;"></span>
<span style="font-size:24px;">ImplA.java</span>

<span style="font-size:24px;">public class ImplA implements Api {@Overridepublic void show() {System.out.println("implA is show");}}</span>
<span style="font-size:24px;">ImplB.jav</span>
<span style="font-size:24px;">public class ImplB implements Api {@Overridepublic void show() {System.out.println("implB is show");}}</span>
<span style="font-size:24px;">工厂类Factory.java</span>
<span style="font-size:24px;">public class Factory {public static Api create(int type){Api api = null; if(type==1){  api = new ImplA(); }else if(type==2){ api = new ImplB(); }else{ api = null; } return api;}}</span>
<span style="font-size:24px;">Client.java</span>
<span style="font-size:24px;">public class Client {public static void main(String[] args) {Api api = Factory.create(1);api.show();}}</span>
<span style="font-size:24px;">在此中我们可以看出接口起来隔离的作用,把Client看做是客户端,客户端要获取ImplA类的实例,我们是使用工厂的模式去获取该对象,Client并没有直接与ImplA类联系在一起,在中间用Api接口隔离了,因为Client类并没有和具体的实现类发生关系,在这里接口就起到了隔离的作用,从而降低了Client类与ImplA类之间的耦合度,</span>
<span style="font-size:24px;"></span>
<span style="font-size:24px;">回调我们知道,在java中回调用的非常之多,比如android中的Button点击事件就是使用接口回调实现的,现在讲讲java中的回调是怎么实现的,先看看接口的定义</span>


打个比方:

有一天小王遇到一个很难的问题,问题是“1 + 1 = ?”,就打电话问小李,小李一下子也不知道,就跟小王说,等我办完手上的事情,就去想想答案,小王也不会傻傻的拿着电话去等小李的答案吧,于是小王就对小李说,我还要去逛街,你知道了答案就打我电话告诉我,于是挂了电话,自己办自己的事情,过了一个小时,小李打了小王的电话,告诉他答案是2,这是网上讲回调经典的比方:


画一个简单的图,演示下回调的流程

上面的图解释的是同步回调,








0 0
原创粉丝点击