好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 LongJL 于 2021-7-13 12:28 编辑
接口
概念
接口就是一种公共的规范标准,接口是一种引用数据类型,最重要的内容是其中的抽象方法。只要符合规范标准,就可以大家通用。当一个类中所有方法都是抽象方法得时候,我们就可以将其定义为接口,接口也是一种引用数据类型,他比抽象类还要抽象。
接口的定义
- 规则的定义
- 程序的扩展性
格式
public interface 接口名称 {
//接口的内容
}
特点
- 接口不能实例化
- 接口和类直接是实现关系
- 接口的子类(实现类),要么重写接口中所有抽象方法,要么是抽象类
- 接口可以实现多个
使用步骤
- 接口不能直接使用,必须有一个实现类来实现接口。
格式:
public class 实现类名称 implements 接口名称 [,接口名称]{
// ...
}
- 接口的实现类必须覆盖重写接口当中所有的抽象方法。
实现:去掉abstract关键字,加上方法体大括号
- 创建实现类对象,进行使用。
注意事项:
如果实现类并没有覆盖重写接口中所有的抽象方法,那么这个实现类自己必须是抽象类。
接口的常量定义和使用
接口当中也可以定义"成员变量",但是必须使用 public static final三个关键字进行修饰
从效果上看,这其实就是接口的【常量】
格式:
public static final 数据类型 常量名称 = 数据值;
注意
- 一旦使用了final关键字修饰,说明不可改变
- 接口当中得常量,可以省略public static final 注意:不写也照样是这样。
- 接口当中得常量,必须进行赋值,不能不赋值
- 接口中常量得名称,使用完全大写的字母,用下划线进行分割(推荐命名)
- 实现类中可以直接使用接口中的成员变量,可以通过类名.变量名调用
接口的成员方法定义和使用
在定义接口中的成员方法时,哪怕没有加入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静态方法。
类和接口的关系
- 类和类的关系:继承关系,只能单继承,但是可以多层继承
- 类和接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口,如果直接父类,和接口中出现了相同的方法声明,但是代码逻辑不一样,优先使用直接父类的代码逻辑
- 接口和接口的关系:继承关系,可以单继承,也可以多继承
# 接口.zip
(2.09 KB, 下载次数: 11)
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|