Java 接口怎么实现

买完菜的你,站在小区楼下的快递柜前,手里攥着生鲜、快递两个取件码,正犯愁怎么同时取两个件——这时候要是有个“帮你同时处理取件需求”的工具就好了,而Java里的接口,就像这个帮你统一处理同类需求的工具。

很多新手刚学Java,总把接口和类搞混,其实不用想复杂,先记个简单的区分:类是“做具体事的人”,接口是“做事的标准合同”。

Java 接口怎么实现

第一步:先搞懂接口的“合同本质”

你可以把接口想象成一份“任务清单”,清单上只写要求做什么,不写具体怎么做。比如你想做一个“能播放声音”的功能,就可以定这么一份接口清单:

`java

// 这就是一个最简单的Java接口

public interface Playable {

// 清单上只有“播放”这个要求,没有说用音响还是耳机

void play();

}

`

这里要注意,清单里的要求(我们叫“抽象方法”),是没有具体实现的——就像你只说“要播放”,但没说怎么播放,这部分得后面的人来补。而且这份清单有两个特点:一是“所有能播放的东西都必须遵守这个规则”,二是“不同的东西可以用不同的方式完成这个规则”。

第二步:用类“遵守合同”实现接口

现在你要做两个能播放的东西:一个是MP3播放器,一个是手机。它们都要遵守“播放”的规则,也就是实现接口。

用Java的话,就是用implements关键字告诉编译器:“这个类要遵守Playable的合同,得把清单上的play()方法补全”。

比如:

`java

// MP3遵守Playable合同,实现play方法

public class Mp3Player implements Playable {

@Override // 这个注解是告诉别人,我补的就是清单上的play方法

public void play() {

// 具体怎么做?用MP3的方式播放——比如输出“用MP3播放《晴天》”

System.out.println("用MP3播放《晴天》");

}

}

// 手机也遵守Playable合同,实现play方法

public class Phone implements Playable {

@Override

public void play() {

// 用手机的方式播放——比如输出“用手机播放《晴天》”

System.out.println("用手机播放《晴天》");

}

}

`

你看,同样是“遵守同一个合同(Playable)”,MP3和手机的具体做法完全不一样——这就是接口的核心好处:统一标准,不同实现互不干扰。

第三步:测试一下“实现后的效果”

现在我们写个测试的小例子,看看接口怎么用:

`java

public class Test {

public static void main(String[] args) {

// 分别创建MP3和手机的对象

Playable myMp3 = new Mp3Player();

Playable myPhone = new Phone();

// 调用play方法,各自按自己的方式执行

myMp3.play(); // 输出:用MP3播放《晴天》

myPhone.play(); // 输出:用手机播放《晴天》

}

}

`

运行这段代码,你会看到两个完全不同的结果,但它们都符合“能播放”的要求——这就相当于你让外卖小哥“遵守‘把餐送到家’的规则”,小哥可以骑车送,也可以开车送,只要把餐送到就行。

可能有人会问,接口和普通类有啥区别?举个生活化的例子:普通类是“你买的成品蛋糕,已经有完整的味道和形状”;接口是“你定的蛋糕要求:要甜、要能装在生日盒里”,具体做的时候,草莓味、巧克力味,圆的、方的,都可以,只要符合要求就行。而且Java里一个类可以同时遵守多个接口,就像你既要“能播放”,又要“能录像”,可以同时遵守两个接口,这是普通类做不到的。

现在你再回想一下,从“定合同”到“按合同做具体事”,是不是就把Java接口的实现搞懂了?其实它没那么复杂,就是用统一的规则,让不同的东西做同一件事,却有不同的方法。

上一篇 C/C++编程语言的核心特点与应用场景全解析