【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ

都学完Javase系列的内容了,感觉好多总结都没写(っ °Д °;)っ
所以,无敌的我又来了,嘿嘿

【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第1张图片

文章目录

  • 前言:
  • 接口
    • 1,接口的概念
    • 2,接口的语法规则和特性
      • 2.1, 语法格式
      • 2.2,特性
  • 3,实现多个接口
  • 4,接口间的继承

前言:

小女子不才,只能写几篇文章献丑了,嘿嘿!!
写的不好的请各路神仙帮我指出来哈,嘻嘻,在此谢过大佬们了!!!
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第2张图片

接口

1,接口的概念

说到接口,相信大部分人想到的是PC上的接口,就好比如笔记本上的USB口。
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第3张图片
USB口上可以接U盘、鼠标、键盘等所有符合USB协议的设备。
从这里的例子可以知道:接口就是公共的行为规范标准,大家在实现的时候,只要符合规范标准,就可以使用。
那么在Java中,接口又是怎么定义的呢?
接口:多个类的公共规范,是一种引用数据类型。

2,接口的语法规则和特性

接口的定义格式和定义类的格式基本相同,将class关键字换成interface关键字就相当于定义了一个接口。

2.1, 语法格式

interface IShape{
//成员变量
//成员方法
...
}

(1)创建接口时,接口的命名一般以大写字母"I"开头。
(2)阿里编码规范中约定,接口中的方法和属性不要加任何修饰符号,保持代码的简洁性。
(3)接口命名一般使用“形容词”词性的单词。

2.2,特性

(1)当我们写接口中的方法时,如果这样子写,编译器会报错!!
代码实例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第4张图片
为什么会报错呢?
注意:因为在接口中的成员方法,只能是抽象方法!!!
代码实例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第5张图片
此时编译器不报错,但我们可以观察到,"public abstract"这些字是灰色的,那当我们改成其他的修饰限定符是否也可以呢?
代码示例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第6张图片
此时编译器报错,所以从这里可以知道**:public abstract 是固定搭配,且可以不写**
代码实例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第7张图片
(2)接口当中的成员变量必须时常量,且默认为"public static final",其中,“public static final”可以不写!!!
代码实例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第8张图片
以上代码编译器会报错,正确的如下:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第9张图片
(3)接口中的方法是不能在接口中实现的,只能由实现接口的类来实现。
代码实例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第10张图片
我们都知道,接口中的方法默认是抽象方法,抽象方法是不能带有主体的,所以这里编译器会报错!!
那如果我硬是要在接口中实现这个方法呢?我们可以在前面加个default。
代码实例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第11张图片
(4)接口中的静态方法可以有具体的实现
代码实例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第12张图片
(5)接口类型是一种引用类型,但是不能进行实例化,也就是不能直接new接口的对象。
代码实例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第13张图片
可见,此时编译器会报错!!
(6)一个普通的类可以通过implement来实现这个接口。
在这里插入图片描述
这里为什么会报错呢?
原因是这个类A没有对抽象方法进行重写,所以要进行重写,如下:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第14张图片
同时,这里我们也可以重写func()方法,为什么呢?我们看一下以下的代码-----》
代码实例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第15张图片
可以观察到,通过这个引用还可以调用func()方法,因为父类是IShape ,所以func()方法是 默认的
这里是default的方法:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第16张图片
所以也可以重写一下func() ,也可以不重写,但是一定要重写抽象方法!!!
对于静态方法,可以通过父类直接调用:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第17张图片
(7)接口当中不能有静态代码块和构造方法
代码实例1(不能有静态代码块):
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第18张图片
代码实例2(不能有构造方法):
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第19张图片
(8)重写接口的方法时,不能使用default访问权限修饰
代码实例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第20张图片
否则编译器会报错!
(9)接口虽然不是类,但是接口编译完成后字节码文件的后缀格式也是.class
例子:在这里插入图片描述

(10)如果类没有实现接口中的所有的抽象放啊,则类必须设置为抽象类
(11)jdk8中讲到接口还可以包含default方法。

3,实现多个接口

在Java中,类和类之间时单继承的,一个类只能有一个父类,即Java中不支持多继承,但是一个类可以实现多个接口。
代码实例(以常用的代码):
父类:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第21张图片
接口:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第22张图片
创建具体的子类:
Dog----》
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第23张图片
我们可以在这个子类中发现:一个类,可以继承抽象类,同时实现多个接口。每个接口之间使用逗号来分割!

------>
在这里插入图片描述
注意:一个类实现多个接口时,每个接口中的抽象方法都要实现,否则类必须设置为抽象类。
(提示:idea中使用ctrl + i 快速实现接口)
Cat----》
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第24张图片
上面两个代码展现了Java面向对象编程中常见的用法:一个类继承一个父类,同时实现多种接口
实例化1:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第25张图片
之后我们可以进行引用输出。
实例化2:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第26张图片
继承的表达含义是:is-a语义,而接口表达的含义是 :具有 xxx特性。
总的来说:接口的使用,让我们不必关注具体类型,而只关注是否具备某种能力。

4,接口间的继承

我们都知道,Java中的类和类之间是单继承的,一个类可以实现多个接口,接口和接口之间可以多继承,那也就是说:用接口可以达到多继承的目的。

接口继承接口,使用的是extends关键字
代码示例:
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第27张图片
(接口之间的继承可以简单理解为把多个接口合并在一起)

总结:以上就是Java中接口的基础理解,其中接口中的三个重要的接口,我会另外再讲,溜了溜了,嘿嘿!

【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第28张图片
我有很努力的学哦!!小朋友们给个三连呗!!不然,不然就拉出去-----------------------------》》
【Java从入门到精通】第十二篇:#标题真的是个烧脑的东西,我词穷(((φ(◎ロ◎;)φ))),不想了,摆烂了o(≧口≦)o,就接口,快来看༼ つ ◕_◕ ༽つ_第29张图片

你可能感兴趣的:(Java新手上线,Java从入门到精通,Java基础学习,Java基础语法)