java中接口的作用

 在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("我是子类的构造方法");
	}
	@Override
	public 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 {
	@Override
	public 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 {
	@Override
	public 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,这是网上讲回调经典的比方:


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

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








  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值