【自学笔记】 Java基础 - 接口
本帖最后由 LongJL 于 2021-7-13 12:28 编辑# 接口
## 概念
接口就是一种公共的规范标准,接口是一种引用数据类型,最重要的内容是其中的抽象方法。只要符合规范标准,就可以大家通用。当一个类中所有方法都是抽象方法得时候,我们就可以将其定义为接口,接口也是一种引用数据类型,他比抽象类还要抽象。
## 接口的定义
1. **规则的定义**
2. 程序的**扩展性**
## 格式
```Java
public interface 接口名称 {
//接口的内容
}
```
## 特点
- 接口不能实例化
- 接口和类直接是实现关系
- 接口的子类(实现类),要么重写接口中所有抽象方法,要么是抽象类
- 接口可以实现多个
## 使用步骤
- 接口不能直接使用,必须有一个实现类来实现接口。
格式:
public class 实现类名称 implements 接口名称 [,接口名称]{
// ...
}
- 接口的实现类必须覆盖重写接口当中所有的抽象方法。
实现:去掉abstract关键字,加上方法体大括号
- 创建实现类对象,进行使用。
### 注意事项:
如果实现类并没有覆盖重写接口中所有的抽象方法,那么这个实现类自己必须是抽象类。
##接口的常量定义和使用
接口当中也可以定义"成员变量",但是必须使用 public static final三个关键字进行修饰
从效果上看,这其实就是接口的【常量】
格式:
public static final 数据类型 常量名称 = 数据值;
注意
1. 一旦使用了final关键字修饰,说明不可改变
2. 接口当中得常量,可以省略public static final 注意:不写也照样是这样。
3. 接口当中得常量,必须进行赋值,不能不赋值
4. 接口中常量得名称,使用完全大写的字母,用下划线进行分割(推荐命名)
5. 实现类中可以直接使用接口中的成员变量,可以通过类名.变量名调用
##接口的成员方法定义和使用
在定义接口中的成员方法时,哪怕没有加入public abstract,系统也会默认加上,JDK7和JDK7之前所有接口中的方法只能是**抽象方法**,在JDK8和JDK9中有了一些新特性
格式:
public abstract void 方法名();
## JDK8版中接口成员的特点
- JDK8版本后,Java只对接口的成员方法进行了改进
- 允许接口中定义带有方法体的方法
如果是java7,那么接口中可以包含的内容有:
1.常量
2.抽象方法
如果是java8,还可以额外包含有:
1.默认方法
public default 返回值类型 方法名称(参数列表) {
//方法体
}
备注:
1.接口当中的默认方法,可以解决接口升级的问题。
2.调用默认方法,如果实现类当中没有,会向上查找
3.接口的默认方法,可以通过接口实现类对象,直接调用。
4.接口的默认方法,也可以被接口实现类覆盖重写
5.如在多实现下,默认方法冲突那么实现类中必须重写冲突的默认方法
2.静态方法
格式:
public static 返回值类型 方法名称(参数列表) {
方法体
}
提示:
就是把abstract或者default换成static即可,带上方法体。
注意事项:
1.不能通过接口实现类的对象来调用接口当中的静态方法。
2.通过接口名称,直接调用其中的静态方法
格式:
接口名称.静态方法名(参数列表);
## JDK9中接口成员的特点
普通私有方法:
private 返回值类型 方法名称(参数列表){方法体};
静态私有方法:
private static 返回值类型 方法名称(参数列表){方法体};
静态只能被静态调用
注意:private的方法只有接口自己才能调用,不能被实现类或别人调用。
## 接口的使用思路
- 如果发现一个类中所有的方法都是抽象方法,那么就可以将该类,改进为一个即可
- 设计到了接口大面积更新方法,而不想去修改每一个实现类,就可以将更新的方法,定义胃带有方法体的默认方法
- 希望默认方法调用更加的简洁,可以考虑设计胃static静态方法。
## 类和接口的关系
- 类和类的关系:继承关系,只能单继承,但是可以多层继承
- 类和接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口,如果直接父类,和接口中出现了相同的方法声明,但是代码逻辑不一样,优先使用直接父类的代码逻辑
- 接口和接口的关系:继承关系,可以单继承,也可以多继承
多谢,目前还在学习中。 wxfy2009 发表于 2021-7-13 12:38
多谢,目前还在学习中。
{:301_997:} 共同加油 楼主,你看的谁的教java视频,推荐一下】 yangheng_wapj 发表于 2021-7-13 13:40
楼主,你看的谁的教java视频,推荐一下】
B站搜 尚硅谷 挺详细的{:301_997:} yangheng_wapj 发表于 2021-7-13 13:40
楼主,你看的谁的教java视频,推荐一下】
我随便找了一期黑马 感觉挺老的 真•笔记 想学JAVA不知道从哪学起
dayudengyu 发表于 2022-11-13 15:20
想学JAVA不知道从哪学起
别学Java了,快跑 学习学习
页:
[1]