Files
Hui-s-notebook/logseq-java/pages/接口.md
2024-02-02 00:12:49 +08:00

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]] ,需要有实现类来进行实现
- 子类和抽象类为继承关系,实现类和接口时一种实现关系
- 抽象类只能单继承,接口可以多继承,多实现