接口那点事,你真的了解吗???

Java 接口

这里不讲为什么需要使用接口,因为大部分人开发那么久,应该都了解使用接口的原因和好处了吧,无非就是松耦合那一套吗,但关于接口的一些问题,你真的考虑过嘛?。

1. 接口中的方法不用声明为public

虽然写上不会报错,但是完全没有必要,因为接口实现的时候,只能是public

更别提将接口方法声明为privateprotected了,直接报错

image-20210317235222474

2. 接口实现的时候,只能是public

除了public,其他类型准报错

何况你再想想,如果要将接口方法申明为private,那写这个接口,还有什么意义?

接口的目的,本来就是为了松耦合,写成private到好,让方法只能在类内部使用了,那还松耦合松个鬼啊。

image-20210317235447384

3. 实现多个接口的重名问题

3.1 两个方法一模一样

这里定义两个接口,其自带的方法,一模一样(一模一样,即指函数名返回值参数类型参数个数不同类型参数的排列顺序都一模一样,这些条件,除了返回值和函数名,其余三样,每一样都是保证函数能够重载的条件)

image-20210318000412331

image-20210318000424942

那最后多接口实现的时候,其实就相当于只实现一个方法,没有什么影响,且都可以实现多态:

image-20210318000627167

3.2 只有返回类型不一样

但是,如果两个接口函数名和参数个数都一样,只有返回值不一样,换句话说,就是不满足区分函数重载的条件,那编译器就会报错:

image-20210318000846017

image-20210318000859682

此时,因为一个返回int,一个不返回,那接口实现写int也不是,写void也不是,

image-20210318000931012

又因为,方法返回的类型不能作为重载的标志,所以,下面这种写法也无济于事…

image-20210318001053987

3.3 只有满足函数重载的条件,接口才可重名

在 3.1 也提到过,参数类型,参数个数、不同类型参数的排列顺序这三样,每样都可以成为重载的条件,只要满足任何一样,就能实现同函数名接口的多继承及实现。

猜你喜欢

转载自blog.csdn.net/weixin_44062380/article/details/114957849