Java接口-----完全解耦和接口回调

这次学习了Java接口的相关知识,相信这次的博客对你们的编程学习会有帮助。
那么进入今天的分享时刻……

完全解耦

当有一个方法操作的是类而不是接口的时候,那么这个方法在调用的时候只能使用这个类或者他的子类,要是想用不在这个类的继承结构上的类来调用此方法的时候,是不能实现的。比如说下面的例子。
加入现在有一个跑(run)的方法,要求有狮子(Lion)和人(HumanBeing)内部有这个方法,使用方法Run,参数是对象,调用参数的run方法。

public class Test {
	public static void main (String [] args) {
		Run(new Lion());
		Run(new HumanBeing());
	}
	public static void Run(Lion l) {
		l.run();
	}
	public static void Run(HumanBeing h) {
		h.run();
	}
}
class Lion {
	public void run() {
		System.out.println("use four legs to run");
	}
}
class HumanBeing {
	public void run() {
		System.out.println("use two legs to run");
	}
}

肯定是这样设计的,但是加入我现在想要加一个Car类,那么Run方法还要重载一次,每次创建一个新的对象都要重载一次Run方法,感觉耦合的太紧,需求稍微改变一下,就要修改一下Run方法,代码的复用性太低。

java当中的接口就解决这个问题,我们把run方法提出来当成一个接口,之后调用方法的时候参数写成Run的类,传参的时候直接调用Run类的方法就行。

interface Run {
	public void run();
}
class Lion implements Run {
	public void run() {
		System.out.println("use four legs to run");
	}
}
class HumanBeing implements Run {
	public void run() {
		System.out.println("use two legs to run");
	}
}
class Car implements Run {
	public void run() {
		System.out.println("use four wheels to run");
	}
}
那么调用方法就变成了
public static void Run(Run r) {
	r.run();
}

这样的话,任何实现run方法的类都可以传到这个方法当中,这样就解除了Run方法和拥有run方法的类之间的耦合。

回过头来我们在看看什么是耦合,耦合就是依赖关系,就像上面第一个例子一样,各种类和Run()之间耦合的太紧, 创建一个对象就需要修改Run方法,依赖关系太强,我们的目的就是消除他们的依赖关系,也就是解耦,使用接口能很好的消除类之间的依赖关系, 看这个用法像是继承当中的向上转型,其实并不然,这个过程叫做向上回调。

向上回调
指可以把实现某个接口的类创建的对象的引用赋值给这个接口的接口变量
那么这个接口变量可以调用对象的实现方法,当接口调用类实现的方法的时候,就通知对象调用相应的实现方法

从实现了接口的对象,得到接口的引用,和向上转型为基类,实际效果是一样的,这些对象都可以调用基类型的方法,对于接口来说调用的是接口当中的方法,对于继承来讲是调用父类当中的方法。

以上就是我对解耦和接口回调的简单理解,感觉自己写的不是太好,希望大佬们对我多多评价,如果有错误,请指出,希望对看这篇博客的你有帮助吧。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页