接口对类的一部分的行为进行抽象。
继承的困境
我们在面对对象中,一个类只能继承自另外的一个类,有的时候不同的类有共同的特性,用字类继承父类的方法很难来完成。
类可以使用implements来实现接口
所以我们可以将特性提取出来做成接口然后用一个称之为implements的关键字来实现,这样就大大提高了面向对象的灵活性。
创建一个名字叫car的类,他有一个方法的名字叫switchradio,然后我们又有一个新的类出现了一个名字叫cellphone的类,他也有一个方法的名字叫做switchradio。

这时候我们发现这两个类有一个相同的方法,我们考虑将它提取出来,如果用弗雷德形式,需要找到一个符合的父类,但是可以看出,cellphone和car大概是没有符合的父类了。
这时候我们就可以把这个方法抽取出来,当成一个interface,然后让这两个类都去实现它。
我们创建一个radio的interface,然后创建一个switchradio的方法。创建方法的写法和类有些类似,但是后面可以看到是冒号而非大括号。然后我们设置它的返回值位void这个关键字,意思是它啥都不返回。

然后我们在类的后面使用implements 来让类实现这个接口。

这样,就完成了接口的工作,接下来interface实现了一个契约功能,我们的类必须要又这个switchradio方法才可以,如果我们删除了是会报错的。
现在我们新增一个方法,称之为检查电池的容量,这个方法cellphone有而car没有,所以我们要新创建一个接口。

接下来我们的cellphone要实现多个接口,我们需要在接口名字后面加逗号。

通过上面的例子,可以体会到接口的灵活程度了吧,接下来接口还可以有继承的关系,注意这是接口的继承而非class的继承,但是虽然这么说,实际上接口的继承也跟class的继承类似,我们新建一个接口叫RadioWithBattery。它继承radio。

这样子就将下面的双接口替换成单接口就可以了。

现在我想大家应该能明白一些interface的精髓了,它就想是某种契约来约定class’的样子,只要我们走路像鸭子,叫起来像鸭子我就不管它是什么东西,都叫做鸭子我们可以通过interface来约束一些毫不相关的东西。
今天的分享就到这里了,如果有什么疑问可以在评论区留言,我会在看到的第一时间进行回复的。