interface接口(学习推荐版)

接口组成部分

interface接口(学习推荐版)_第1张图片

示例代码:

interface接口(学习推荐版)_第2张图片

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

interface接口(学习推荐版)_第3张图片

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

interface接口(学习推荐版)_第4张图片

注意事项:

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

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

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

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


常见接口使用情况

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

interface接口(学习推荐版)_第5张图片

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

interface接口(学习推荐版)_第6张图片

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

interface接口(学习推荐版)_第7张图片

优势与好处

interface接口(学习推荐版)_第8张图片

示例代码:

interface接口(学习推荐版)_第9张图片

对于代码

Driver s = new A();

s.drive();

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

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

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

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

interface接口(学习推荐版)_第10张图片

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

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

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

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

interface接口(学习推荐版)_第11张图片

interface接口(学习推荐版)_第12张图片

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

interface接口(学习推荐版)_第13张图片

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

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

interface接口(学习推荐版)_第14张图片

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

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

通过接口名.方法名访问

interface接口(学习推荐版)_第15张图片

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

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

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

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

interface接口(学习推荐版)_第16张图片

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

interface接口(学习推荐版)_第17张图片


接口使用的注意事项

事项1.

interface接口(学习推荐版)_第18张图片

事项2.

interface接口(学习推荐版)_第19张图片

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

事项3.

interface接口(学习推荐版)_第20张图片

结果验证

interface接口(学习推荐版)_第21张图片

事项4.

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

interface接口(学习推荐版)_第22张图片

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

interface接口(学习推荐版)_第23张图片

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

你可能感兴趣的:(Java学习从0到1,java,开发语言,学习,笔记)