接口interface(学习推荐版)——通俗易懂,建议收藏备忘

接口组成部分

image-20231203181757382

示例代码:

image-20231203180646821

1.默认会在类型前面添加public staic final修饰变量,所以可省略image-20231203180912568

2.默认在方法前面添加public abstract修饰,但没有staic和final修饰

image-20231203180951764

注意事项:

1、用staic final的变量就是常量

2、接口只能由成员变量(常量)和成员方法(抽象方法)两部分组成

3、所以接口不能创建对象 即不能通过new 接口名()创建对象,要使用的话用implements实现接口

4.成员变量和方法的权限修饰符只能是public,不能是private,default,protected


常见接口使用情况

1.若接口中的方法重名,实现同名方法相当于把接口的重名方法都实现了image-20231203182100630

2.方法名相同,参数不同的话,会被当做两个不同的方法image-20231203182240096

3.仅仅是方法类型不同,会报错,因为不知道执行那个方法image-20231203182619367

优势与好处

image-20231203184034990

示例代码:

image-20231203184102321

对于代码

Driver s = new A();

s.drive();

左边变量Driver s还可以用接口Singer s替换,当然也可以父类Studnet s替换啦

以后如果不好用,就可以直接换new B(),前提是B实现了Driver,而s.drive就不用修改了,解耦方便

JDK8开始,接口中新增的三种方法

接口新增了这个三种方法,接口的组成部分就多了这三种方法了,也就是说接口组成部分为常量、抽象方法还有这新增的三种方法

image-20231203221019357

该新增的三种方法,该三种方法里面可以写{} ,{}里面写方法体(语句)了

目的就是扩展接口自身的功能,接口自身有方法,其实现类可以去调用。

如果在接口中重新定义一个抽象方法的话,那么接口中的所有实现类都必须实现这个抽象方法,假如接口的实现类有10000个,那这10000的实现类都要去实现这个抽象方法,所以这就是为什么Java要在接口中新增这三个方法的原因了

方法1(方法前面default修饰):既然是default修饰,那访问范围当然是同包下访问咯

image-20231203214537018

image-20231203213901767

不同包下也能访问,说明默认有public修饰image-20231203215930134

default前面默认有public,也就是说访问范围就是public,而不是default,这个default只是一个标识

方法2(方法前面private修饰):只能在本类中访问

image-20231203214405675

既然是private修饰,自然而言实现类是无法在本类外访问的

方法3(方法前面static修饰):其实也默认加了public,也就是public static修饰

通过接口名.方法名访问

image-20231203215051417

接口的多继承(可以继承多接口)

注意,接口可以多继承,但类不能多继承

接口的多继承其实就是为了简化书写,便于类实现罢了

例如下面代码,类E要实现A,B,C接口直接implements比较麻烦

image-20231203221238882

简化形式,直接写接口D,虽然是简化形式,但类E该必须实现的抽象方法,还是得实现,也就是说必须实现A,B,C,D(包括D)的抽象方法

image-20231203221442584


接口使用的注意事项

事项1.

image-20231203222249979

事项2.

image-20231203222346655

和事项1一个道理,只不过换了中形式而已,其本质一样的

事项3.

image-20231203222653004

结果验证image-20231203222732057

事项4.

接口新增的default冲突了会报错,但是又可以不冲突image-20231203223137186

可以看到这里报错了,但是又可以让它不报错,就是class N去实现test()方法

image-20231203222853901

这个不冲突可以理解为calss N去实现了test方法相当于把接口It1和It2的两个方法都实现了

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫青.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值