Interface 接口
前言
刚开始学Java时很不能理解接口的作用,因为接口不像继承,直接减少码量,每实现一个接口都要实现其方法,这不是增加了码量吗?
那为何还需要接口的存在呢?
What
大家都知道,Java不支持多继承,那么如何实现多态呢,这时候就用到了接口,通过实现多个接口来实现多态。
首先,我开了个公司
虽然我公司很小,但是里面员工也不少呢 (o^^o)
创建类
//这是一只程序猿
class Programmer{
public void doCode(){
System.out.println("I'm programming!");
}
}
//这是一只设计狮
class Designer{
public void doPaint(){
System.out.println("I'm painting!");
}
}
每个员工的职责不同,我要让他们各自去工作
public static void main(String[] args){
Programmer programmer=new Programmer();
programmer.doCode();
Designer designer=new Designer();
designer.doPaint();
}
这样看是不是看不出什么,觉得写的挺好的。
但是我很累呢!每个人都要我督促,我要知道每个员工做什么工作,我不累死了,毕竟我员工那么多。
创建接口并实现
interface Worker{
void doWork();
}
class Programmer implements Worker{
@Override
public void doWork(){
doCode();
}
public void doCode(){
System.out.println("I'm programming!");
}
}
class Designer implements Worker{
@Override
public void doWork(){
doPaint();
}
public void doPaint(){
System.out.println("I'm painting!");
}
}
嗯,这样看起来确实比上面那段没实现接口的代码长,说了半天还是没解释接口的作用嘛 ( ̄^ ̄)ゞ
不急,我们先来建一个工具,用这个工具让员工们各自去工作。
class Tool{
public static void goToWork(Worker worker){
worker.doWork();
}
}
此时发现我并不知道员工们各自的工作,但依然可以让他们去完成自己的工作。
public class Main {
public static void main(String[] args){
Tool.goToWork(new Designer());
Tool.goToWork(new Programmer());
}
}
如果再加一个员工,只需要实现 Worker 接口,我就可以让他去工作啦~
具体工作内容什么的,就让 Manager 去分配吧,毕竟我有钱( ´ ▽ ` )ノ
总结
虽然我没有写如何实现多态,但新手对接口的疑问并不在于如何实现多态,接口在使用过程中大部分并不是用来实现多态的,更重要的是用来实现解耦,多态只是附加效果。
解耦即 ——— 将接口从具体实现中解耦使得接口可以应用于多种不同的具体实现,因此代码也就更具可复用性。
各模块只需和接口发生耦合,并不需要知道具体类的具体实现。

被折叠的 条评论
为什么被折叠?



