转载

(白话通俗讲解)Java实现接口的类的对象赋值给接口的理解

原创博客,转载请注明出处。

相信小伙伴们都知道面向接口编程的好处,这里我不再叙述。重点是怎么理解这种困扰新手的方式。编程嘛,肯定是为了解决实际问题,如果不能很好的和生活中的事例相结合,单纯炫技把代码弄得很复杂,我是不推荐的。

废话不多说,先来看一段代码:

public interface JustInterface {

	void justMethod(Object object);
	
}

public class JustInterface Impl implements JustInterface{

	@Override
	public void justMethod(Object object) {
		// TODO Auto-generated method stub
		do something…
	}

}

// 在Main.class里可以这样声明和初始化:
public static void main( String[] args ) {

	JustInterface justInterface = new JustInterfaceImpl();
	justInterface.justMethod;

}
复制代码

对于这段挺正经的面向接口编程的代码,包括我自己,也一直处于似懂非懂的状态,但是具体为什么会出现这种方式,我一定要想清楚才会安心。

接下来请允许我用一个很俗的例子来说明这种方式。

故事是这样的,双手受伤的独居宅男,想吃放在面前饭桌上的青椒炒牛肉。(别问为什么,宅男就是要吃青椒炒牛肉,也别问哪来的青椒炒牛肉,继续看就行了),我们需要一种方法,最好是人机接口,可以帮助这位宅男不用手轻松吃到青椒炒牛肉。

市面上有一种机械臂,他对外提供了一个人机接口。而接口里面有一个方法,这个方法听起来很符合宅男的要求:夹起机械臂面前的物体-移动到指定坐标点-然后松开。看来只需要把这个机械臂放在饭桌上就行了。

于是双手受伤的独居宅男买了一个机械臂(怎么买的,你不用知道),想通过这个机械臂来吃青椒炒牛肉。整个欢喜的过程如下:

// 在机械臂公司里的组装线是这样的:
public interface 人机接口 {
	
	void 传递物体(宅男嘴里的位置);	

} 

public class 机械臂 implements 人机接口 {

	@Override
	public void 传递物体(宅男嘴里的位置) {
		夹起机械臂面前的物体;
		移动到 宅男嘴里的位置;
		松开物体;
	}
}

// 在宅男家里:
main 函数 {
	人机接口 = new 机械臂;  //宅男准备开始使用带有人机接口的实现了传递物体方法的机械臂
	机械臂.传递物体(宅男嘴里的位置); //机械臂夹起了放在面前的青椒炒牛肉,移动到宅男嘴里的位置,然后松开了青椒炒牛肉。
}
复制代码

对比一下文章开头给出的代码:

public interface JustInterface {

	void justMethod(Object object);
	
}

public class JustInterface Impl implements JustInterface{

	@Override
	public void justMethod(Object object) {
		// TODO Auto-generated method stub
		do something…
	}

}

// 在Main.class里可以这样声明和初始化:

public static void main( String[] args ) {
	JustInterface justInterface = new JustInterfaceImpl();

	justInterface.justMethod;
}
复制代码

怎么样,这样的通俗事例对于理解是不是简单多了?和实际结合起来解决问题,我觉得是编程的首要核心。 至于宅男为什么不把头埋下去用嘴直接吃青椒炒牛肉呢?可能是长期玩游戏,脖子僵硬吧。

后记:宅男在机械臂的包装盒子里发现了一份迷之说明书,在说明上发现了如何设置机械臂的动作,于是邪恶的思想涌入了宅男的大脑。。。

原文  https://juejin.im/post/5d70b4216fb9a06ae7642756
正文到此结束
Loading...