00:00
我们来学一下面向对象编程里面的接口interface。那么我们先来看一下为什么需要接口。为什么我们需要接口呢?大家看这里有一张图,这张图呢,比较形象的说明了这个现实生活中的接口,接口大家看这是现实生活中呢,我们有我们有这个电脑对吧,电脑看我们的电脑里面都有一个叫USB接口,这是这是不是一个接口啊,那现在呢,假设你有手机,你还有相机,当你把手机和相机插入到这个接口的时候,是不是,呃,是不是这个计算机就会来识别你是什么设备,然后呢,就开始工作了,是这意思吧,就现实生活中就有这这样的一一种接口的案例。那么对于对于这个,呃,对于这个手机和相机来说呢,他并不关心,他并不关心他自己是什么,他只要把这个接,他只要把自己。接,就是说通过这个USB线插入到接口里面呢,计算机就能识别它,然后就会就能为他工作,是这意思吧,这就是我们生活中的接口,你比如说大家看u us插槽就是现实中的借口,你可以把手机、相机、U盘都插在这个USB插槽上而不用,也而不用担心哪个插槽是专门插哪个的,对于这个接口来说,我并不关心你插的是手机还是相机,我不管,只要你把这个给我插上了,我就能识别你,是这意思吧?
01:28
所以说它这个接口呢,是是有自动识别的功能,是有自动识别原因是什么?因为USB插插槽的厂家和各种设备厂商,他都遵循了统一的规则,统一的这个尺寸和排线。那我们来体会,我们来体验这种感觉啊,我们来体验这种感觉,就是这就好比这个东西就是计算机对外的一个接口。那么当你一个外设接入到这个USB接口过后呢,我计算机内部就可以识别你是什么外设,从而来进行为你服务,同样道理,你相机给我插入了,我就能识别你是相机,好,那么这种现实生活中的这种接口,其实大家看到它是很有意义的。
02:11
它是非常有意思的一一种东西,对吧,我一个接口就可以搞定你所有的设备。所有的设备,那么这种现实生活中的这种实现方式呢?在我们计算机编程里面也有,大家来看,我这说了一句话啊,这样的设计需求在go浪编程中也是大量存在的,而且告诉大家是大量存在。我们如果说go浪的面向对象编程里面的核心是什么,那我告诉大家一定是接口编程,而且go浪的和这个接口编程呢,跟别的编程语言的接口编程还真有很多不一样的地方。他特别的有特色。它特别有特色,那么我曾经说过,一个计算程序就是一个事件,在现实中存在的情况在程序中也会出现,那么我们呢,就用程序来模拟一下前面的应用场景。
03:01
来,我们来模拟一下,好吧,我们写一个快速入门案例,我们干什么呢?我们就来把这个接口,把这个接口的这个案例给大家写进去,好吧。那在接口呢,呃,我先说一下,就是接口本身这个讲接口之前,就是讲这个接口之前,按理说应该讲多态了,对吧,因为前面我们是不是讲了封装,我们又讲了继承。这两大特性我们说完了,那现在应该讲多肽,那为什么老师先讲这个接口呢?因为是这样子的啊,我们需要讲解这个接口。因为在go浪中,多态的特性就是你这个多肽主要是通过接口来实现的,如果离开了接口,那么多态这个特性呢,其实它也讲不明白,所以说为什么我们先讲接口再讲多肽能理解哈,所以说我们现在就来把这个接口给大家说一说,好接着往下写。结果。
04:00
Interface英文。好,给他来一个标题二。我来个标题二,同学们。诶,标题二上哪去了,在这。对吧,那么我们做了一个基本介绍。做先做了一个基本介绍,给他一个标题三,那基本介绍我说什么了呢?大家看我说了这么几句话啊。对。为什么要先讲接口好,然后呢?我们这有一个现实生活中的接口的案例,大家体体验了一下,很形象的一个接口,对吧?为什么要接口呢?因为一个接口可以搞定所有外设,那我们软件编程中为什么要接口呢?因为一个接口就可以让我们代码的耦合性降低,而让我们这个代码的通用性增强,明白这意思吧。啊,它是松耦合啊,它是这个减少耦合的,那为什么要有这个东西呢?我们把它也罗列在笔记里边去。没问题吧,那这块呢,我就脱离干啊,把它整个截一个小图片放到我们的PPT里边去。
05:06
OK。好,下面呢,我们来一个接口,快速入门。快速接口,快速入门。那走一个吧。呃,还是老规矩,在讲这个接口快速入门的时候呢,我们就是不讲细节,大家体验一下这个接口的特点,好吧,就说这里面我们不讲细节,我们就是快速的给他走一个工浪里面的接口,它是怎么用的?那我呢,把这句话也放过来。好,那么现在我们来走一下代码,我们用程序模拟一下前面的应用场景。好,来,跟上老师思路,我们走一下代码。代码。代码实现。没问题吧,好,给他一个板书。那现在呢,我们开始写这这段代码了。还是在这里啊,我们写编一个新的文件夹,叫interface。
06:02
DEMO。好,然后呢,写一个。主函数main点够没问题吧,然后打一个包package。Me?然后呢,我们import一下。我match。好,写完了,那写一个主函数。没问题吧,好,现在呢,我们来做一下这个工作啊,首先呢,我们来定义一个接口,或者声明一个接口,声明一个接口。那有些人喜欢把声明叫定义,也是一个意思。没问题,好,现在呢,写一个type。Type,那type的话我们写,呃,这个接口我们就叫USB。因为根据刚才这个图嘛,对不对,这个图这不就一个接口吗?就USB接口,我取个名字就叫USB,它的后面类型是interface。啊,那么这个us USB里面呢,我们简单的来模拟一下,就是当我们一个外设插入的时候,它就开始工作,当它拔出来的时候呢。
07:06
他就是停止工作,好,我写两个。Start,他怎么写的,是你一个方法。Start好,这个就是他一个方法,然后呢,这个方法是没有实现过的啊,直接stop。STP。大家看这地方就是接口的两个方法啊,接口的两个方法,那么在接口里边呢,在我们这个文档里面,其实接口也是非常多的,你看。在这里面我该随便找一个,你看这这个就是个接口,到这里看这。是吧?Type interface,这是接口的名称,这是接口的类型,然后里面呢,它有个方法是吧,这他有方法啊。OK,嗯,他这因为有返回值,我这没有返回值,所以说我就没有写对不对。这是两个没有实现的方法。我写到这。声明了,声明了两个。
08:00
两个没有实现的方法。对吧,没有时间的话放这,那现在呢,我们来呃,写什么呢?这是个接口,那么现在我们需要有需要写这么两个结构体,一个是手机,一个是相机,好来写一下。结构体structure。首先我们学习一个手机form。这写错了啊。这样写type。Type,然后跑起来,那这个结构体里边呢,暂时没有什么,没有什么字段,我就直接实现方法就说让让什么呢,让我们这个结构体实现。实现谁呢?USB这个接口的方法。接口的方法,它的接接口的方法不是有两个吗?对吧,那我就实现它怎么实现,大家看我的代码哦,非常简单,跟前面一样放。然后呢,For心for。
09:00
对不对,哎,那这个地方我们就不用信号了,好吧,就直接phone就行了,这简写一个P。就行。好,呃,写完了过后呢,这个地方我们要这个方法名得有star。保持一致,没有返回值对吧?没有返回值写完写完过后,我们写一句话。好,我们写句话叫手机,手机开始工作。对不对,手机开始工作,那此外呢,我们还需要有个方法叫stop stop也来实现它。这几个stop。好,这帮手机停止工作。手机停止工作。没问题吧,也就是说我现在这一个form,它实现了us这个USB接口的两个方法。实现了这两个方法,那么这个时候呢,我们这个呃,Phone这个结构体对象实例其实就可以当做这个接口来使用了啊,就可以给这个接口赋值了,那接着我们再往下面看啊,再往下面看。
10:07
当然同样我们让什么呢?让这个手机。让这个,呃,相机啊,相机相机是camera。开。是吧?Camera也实现USB接口的方法?这个没有问题吧,那一样道理,那为了省事呢,我就从这边粘贴一份,粘贴的时候呢,我们把这个改了,改成什么开门。Camera,好,这个camera我还没写Type Camera。诶,写错了。Ta camera。它首先是一个结构体,先把它定义出来。Ready吧,Camera好,Camera写进去,写进去,那这个时候我们就写成C。好,这边我们就写成叫什么呢,叫做相机开始工作,这边我们就机开始工作。现在大家还没有,还没有体现到接接口的好处啊,大家看我们写了两份,哪两份,一个是phone phone实现了接口的两个方法,Stop和stop,一个是camera相机,它也实现了这个接口的两个方法。
11:16
Stop,呃,Stop和stop看清楚没有啊,现在呢,我们再来写一个计算机。你是不是还有个计算机啊电脑。计算机。那计算机的话呢,我们先定义一个结构体type。Computer。那computer是个结构体,先写好它这里面呢,也也暂时不需要属性好,我们现在呢,给他提供一个提供一个方法编写。编写一个方法,这个方法是什么方法呢?我们来看一下,就是当我们这些外设插入到这的时候呢,他就开始工作了,于是呢,我给他写一个方法叫working。可以工作的方法,OK。
12:00
好,我开始写了啊,那就放。然后function里面写一个什么呢?Computer。C computer。啊,给他绑定一个方法,他的方法叫。OK,然后这里边我们要接收一个东西,我要接收你把这个设备插进来的啊,我这怎么声明呢,注意看这是关键USB。类型是USB。好,这小写呢。大家看到这是什么意思没有,就说我这个working这个地方呢,我可以接受一个接口类型,什么接口类型,就是USB这种接口的类型,看看没有,好,我这做一个声明啊,做一个注注释。就这个方法呢,这个方法。方法。接收。接收一个什么呢?USB这个接口类型。接口类型的变量。明白,那你只要是实现这个接口的,你都可以给传给我,也就是说什么意思,只要是。
13:04
只要是实现了什么USB接口方法的接口,它就叫接口啊,这样就叫这样,它的专业术语就是叫实现了USB接口。那么所以实现了USB口,其实说全乎了就这句话。所谓注意听这句话啊,所谓实现。USB接口就是指。就是。指。就是指什么呢?诶,就是。就是指啊,诶这个指。就是指实现了。就是指实现了什么USB?USB接口声明的所有方法。再说一遍啊,嗯,如果别人说实现了某某接口,那么言外之意就是说。它实现了,就是有一个结构体或者是一个变量,它实现了USB接口啊,所以实现USB接口就是实现USB接口里面生命的所有方法,那大家看我这个camera,还有这个form,它是不是已经把接口里面的stop和stop都实现了,那也就是说form和camera它就实现了这个接口,实现了什么接口,USB这个接口。
14:23
为什么呢?因为我把这两个方法都实现了呀。对不对,好,这个概念大家一定要清楚啊。好,那现在呢,我们就来用它了,C,那就是USB点,它有一个是我叫他star。好,再来usb.stop。大家看这有这意思吧,这个地方我通过接口来调用stop stop。我通过这个接口来调用。啊,通过USB这个这个接口变量。接口变量来调用。调用什么呢?就是star。
15:00
和stop方法。十道普通话行吗?那现在我们来测试一下,看看能不能用了啊。我们来测试一下。那测试的时候,我需要我需要创建或者叫做声明相关的结构体变量,先创建。创建结构体变量。哪些变量呢?我们来一个一个一个的看,那你首先得有一个computer吧,那我先把computer创建起来。这个大家看看能不能看懂啊,呃,那我这就直接这样去写了。好吧,给他一个,那就写全吧,Computer。一个。还有呢,就是我们的form。好,来一个phone。再来,我们还有一个什么呢,Camera。Camera,好,也把它写进去。C。
16:00
这个我们就写了开写完了,那写完过后我们让他怎么工作呢?好大家看关键点,关键点啊,让他来工作了。关键点就是我们这样写,因为你这个computer里面是有方法的,Phone呢已经实现这个接口了,所以说我调用它。点。点什么呢?Working,然后我把phone传进去,诶大家有没有感觉到,好像是把这个手机插入到这个接口了。也就是说我把这个phone传给了这个接口,那接口呢,就会去调用stop stop,至于你这个star和stop怎么实现的,那就根据你的这个phone怎么写的,我就怎么去调用。看到没有?好,那这条我们再来叫computer.working。好,我把什么传进去呢?我把这个camera传进去。开门传进去,好,我们现在一个一个测试啊,我们先来看,此时此刻我把phone传给了USB,也就是说我把这个phone这个结构体变量传给了USB。
17:04
然后这个USB呢,调用了stop和stop,那这个时候因为你传的是phone,所以说它在这个地方是调用什么呢?调用phone的stop和stop,再说一遍,因为你传输的是phone,所以说它在这个地方调用的是phone的stop和stop,那我们看是不是这样子的。好,我保存一下来,朋友们我执行一下。哦,看这边代码有问题,我们找找代码在哪里啊。这有问题。哦,我们还没用它,那这个地方就麻烦了,因为那就先先用一个吧,好吧,先用一个,看看这个时候有没有问题。CD。点点CD到我们写的这个叫做接口DEMOGO,让点go跑起来,我们可以看到,这时呢,它就马上调用了相应的方法看手机。开始工作,手机停止工作。诶,你们有没有发现这个时候我传的是phone,它就调的是phone的方法,而phone的方法是不是就是你自己实现的呀,是不是这实现的大家有一点感觉没有好,然后呢,这时我把这个camera打开。
18:13
我这调用这个,那当你把camera传进去,它会自动识别,看到没有自动识别哦,这是手相机来了,它就会去掉相机的,这个方法是不是有点类似于我们这个感感觉,当我们把手机插进去,它识别是手机,当我把相机插进去,这个电脑能识别是相机。是不是很像这种这种应用场景啊,来我们试试看这个地方它能不能识别到是相机过来了。跑一个。跑起来,我们可以看到他很聪明,你看前面这两个,他说是手机开始工作,手机停止工作,下面是相机开始工作,相机停止工作。那就是通过这个案例,你同学们有什么感觉没有,是不是就感觉这个通过这个接口来做的话,我们只要定义一个规范,就你现在至少能得到一个初步的结论,就是说当我们去定义一个接口,我把这些方法接口都定好,然后让别的结构体或者别的变量来实现它,然后呢,我们就可以工作了。
19:15
是不是特别方便呢?这种应用场景就叫做什么呢?叫做高聚合松耦喉的一种,编所说松松耦合高内聚的一种辩证思想。那么这个呢,大家可能一时半会还理解不到,我先把这个给给大家整理一下啊,后面我们会逐步的一层一层往里面深入的展开讲解,现在只是一个入门,再说一下啊,现在只是一个入门,因此呢,细节我还没有谈,来吧各位同学,我把这段代码先给同学们。放到我们的笔记里边去。因为代码比较多,老师呢,就不一一个一个的截了,好吧,我就整体把它拿过来。拷贝,然后放到这里面去大家看。是不是应该能看懂吧。
20:00
应该能看懂,好,我做一个说明,上面是什么呢?上面就是对上面就是一个。呃,接口的快速入门。说明。上面的代码。上面的代码。就是一个快速入门。啊,接口编程的快速入门。接口编程的快速虽然很简单,但是其实他已经把接口编程的核心思想体现出来了。而且这地方其实已经看到有多肽的影子了,哪里这其实就已经体现出多肽了。我为什么说这已经体现出多态了呢?大家难道没有感觉吗?当我给他传一个phone,他就知道你是phone。当我给他传一个。Camera,他就知道是一个camera,难道不是多态吗?那就说USB随着你传入的参数类型不一样,它能体现出不同的状态,这个其实就是多态,能理解吗?只是我们现在还没把这个概念深入的剖析进去,但是呢,这个接口编程的一个雏形就是它的一个大体的,大体的结构已经出来了。好,同学们,那关于这个接口的介绍和快速入门呢,先给同学们讲解到这里。
我来说两句