12.Java基础之接口interface
庭院深深深几许,杨柳堆烟,帘幕无重数。
——欧阳修《蝶恋花》
1. Java基础之接口
1.1 接口的定义
- 是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么
接口
的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)。接口
就是多个类的公共的规范,接口是一种引用数据类型(引用数据类型:数组,类,接口。),接口中最重要的内容就是:抽象方法。
1.2 定义一个接口
备注:把class替换成interface。但是.java文件编译之后依然是生成class字节码文件。
1 | public interface 接口的名称{ |
定义实现类
- 既然说接口中存在大量抽象方法,无法直接创建对象,必须有一个实现类来实现当前的接口。
1
2
3
4
5
6
7 // 1.实现类的格式为:
public class 类名 implements 接口名{
// 实现所有的抽象方法
}
// 2.接口的实现中,必须实现(重写)接口中的所有的从抽象方法。
// 3.创建实现类,调用具体的放。
- 定义一个抽象实现类//如果在抽象的类中,可以重写也可以不重写抽象方法(而接口中必须重写抽象方法)。
- 定义一个普通类//如果在普通的类中,必须重写接口中的所有的抽象方法。
- 如果实现类中没有覆盖重写所有的抽象方法,那么这个实现类必须是一个抽象类。
1.3 接口和抽象类区别
- Animal 抽象类
Dog ex Animal; dog is a Animal;
抽象类是用来抽取是实现类的模板。- Computer 接口
USB implements Computer; computer has a USB;
接口是用来扩展功能的。
1.4 (接口)抽象方法的定义
在任何的java版本里面,接口中只能定义抽象方法,不能定义普通方法。但是扩展了默认方法和静态方法和私有方法。
Public abstract 方法的返回值类型 方法名称(参数列表)
- 修饰符:接口中的抽象类必须使用public修饰。如果你不写,默认会加上一个public
- abstract修饰当前方法为一个抽象方法。即使没写,默认会加上一个abstract
- public abstract 都可以不写。默认加上。
jdk7
–接口中只能存在
常量;其中接口中的成员属性都是常量(全大写,单词用下划线分割),常量在使用的时候必须先赋值。
- 不写默认加
public static final
:public static final int VOICE_NUM
=30
;抽象方法;
jdk8
–接口中扩展的内容
添加默认方法的功能,解决接口升级所来的大量影响。默认方法可以直接使用实现类的对象来调用
静态方法—不能使用实现了的对象调用,应该使用接口名.静态方法名来调用。
jdk9
–扩展的内容
- 私有方法。私有方法只能在接口中调用–私有方法解决了–抽取公共代码,减少代码冗余,提高了代码的复用性。
1.5 接口的特征
1. 接口的多实现
- 如果一类实现的多个接口中出现了相同的抽象方法,只会重写其中的一个方法
- 如果一个类实现的多个接口中出现了相同的默认方法,(因为默认方法不需要重写,所以通过当前类的对象调用的时候,会发生冲突。所以
jdk8
提供了强制的要求) 那么应该将当前的默认方法在本类中重写。- 接口中不允许有static静态代码块,接口中,没有构造方法。
2. 接口的多继承
java是单继承的但是接口是多继承的。如果在继承的多个接口中,出现了每个接口里面有相同默认方法,那么实现的接口中,重写默认方法。可以写成default类型的,也可以写成抽象方法。
☆
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jilfoyle!