54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
- 也是一种抽象,比 [[抽象类]] 更抽象
|
|
- 作用
|
|
- 帮系统拓展新的功能
|
|
- 定义语法
|
|
- 使用[[关键字]][[interface]]
|
|
id:: 625519bb-2a31-4f5a-aa30-0029cb6c9f32
|
|
- 定义时可以不写 [[public]] [[abstract]],这两个是默认
|
|
- ```java
|
|
public interface 接口接口名{
|
|
void fly();
|
|
}
|
|
```
|
|
- 接口名使用 [[大驼峰]]
|
|
- 接口不是一种类,还是一种 [[引用数据类型]]
|
|
- 使用
|
|
- [[关键字]][[implements]]
|
|
- ```java
|
|
访问修饰符 class 类的类名 extends 父类 implements 接口{
|
|
@Override
|
|
//重写接口的方法
|
|
}
|
|
```
|
|
- 特点
|
|
- 不能实例化,不能用[[new]]
|
|
- 接口中抽象方法默认为public和abstract
|
|
- 接口中抽象方法,必须要通过实现类给与实现
|
|
- 接口中的抽象方法,实现类可以变成抽象类,就可以不实现
|
|
- 类只能单[[继承]],接口可以多实现
|
|
- 类只能单继承,接口可以多继承
|
|
- 可放置的元素
|
|
- 抽象方法
|
|
- 静态常量
|
|
- ```java
|
|
public static final int HEIGHT_LIMIT = 3000;
|
|
|
|
//使用 接口.常量名
|
|
```
|
|
- JDK1.8之前只能放抽象方法及静态常量
|
|
- JDK1.8增加[[default]], [[静态方法]]
|
|
- ```java
|
|
default void fly(){}
|
|
static void cook(){
|
|
System.out.println("做饭")
|
|
}
|
|
```
|
|
- 接口与类关系
|
|
- 接口与类是拓展关系,类之间是继承关系
|
|
- 继承体系中本身就有的方法放在抽象类中,如果需要给继承体系拓展新的功能,就放在接口中
|
|
- 接口与抽象类区别
|
|
- 语法上:
|
|
- 抽象类用 [[abstract]] ,需要有子类继承实现
|
|
- 接口使用 [[interface]] ,需要有实现类来进行实现
|
|
- 子类和抽象类为继承关系,实现类和接口时一种实现关系
|
|
- 抽象类只能单继承,接口可以多继承,多实现 |