接口
接口就是多个类的公共规范
接口是一种引用数据类型,最重要的内容就是其中的:抽象方法
如何定义一个接口的格式:
public interface 接口名称{
//接口内容 }
如果是java 7 那么接口中可以包含的内容有:
1:常量 (不可改变的量)final static
2:抽象方法
如果是java 8 还可以额外包含:
3:默认方法
4:静态方法
如果是java 9 还可以额外包含:
5:私有方法
在java中的任何版本,接口都能定义抽象方法
格式:
public abstract 返回值类型 方法名称(参数列表);
**注意事项:
1:接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract
2:这两个关键字修饰符,可以选择性地省略(但是一直存在着,他会自动生成)
3:方法三要素,可以随意定义**
接口使用步骤:
1:接口不能直接使用,必须有一个实现类来实现该接口
格式:public class 实现类名称 implements 接口名称{...}(和继承差不多)
2:接口的实现必须覆盖重写接口中所有的抽象方法
3:创建实现类的对象,进行使用
注意事项:
如果实现类没有覆盖重写接口中所有的抽象方法,那么这个实现类就必须是抽象类(和继承抽象类 类似)
接口的默认方法格式
public default 返回值 函数名称(参数){。。。}
就像在接口里面定一个【普通方法】
默认方法主要是为了解决接口升级(也就是接口新出了方法)
例如以前使用接口实现的类,没有覆盖重写新的方法,会引起报错
但是有了默认方法,以前的接口可以不重写默认的方法,还可以直接调用和覆盖重写
默认方法的调用:
1:接口的默认方法,可以通过结构实现类对象,直接调用
2:接口的默认方法,也可以被接口实现类覆盖重写
接口的静态方法格式
public static 返回值 函数名称 (参数){...}
注意事项:不能通过接口实现类的对象来调用接口当中的静态方法
> 正确用法:通过接口名称,直接调用其中的静态方法
(静态方法没有重写一说,但可以重写建立一个,虽然名字一样但没有重写关系)
接口的私有方法格式
private (static)返回值类型 方法名称(参数){。。。}
加static 就是给静态方法的私有方法
1:普通私有方法,解决多个默认方法之间重复代码的问题
2:静态私有方法,解决多个静态方法直接重复代码的问题
(私有方法的作用就是只能给写私有方法的类或接口自己使用, 不能允许子类实例化对象使用,也不能允许实现类使用)
接口中的常量:
接口当中也可以定义“成员变量”,但是必须使用public static final 三个关键词进行修饰 从效果上来看,这其实就是接口的常量
一旦使用final关键词进行修饰,说明不可改变
注意事项:
1:接口当中的常量,可以省略public static final
2:接口当中的常量必须赋值,不能不赋值
3:接口中的常量名称要全部大写
总体注意事项:
1:接口不能要静态代码块 和 构造方法
2:一个类可以实现多个接口
3:如果实现类所实现的多个接口中,抽象方法重复,那么只需覆盖重写一个抽象方法即可
4:如果实现类没有覆盖重写所有抽象方法,那实现类必须是一个抽象方法
5:如果实现类所实现的多个接口中,默认方法重复,那就必须重写默认方法
6:如果一个实现类,继承父类的方法和接口的方法重复,优先使用父类当中的方法
类与接口 叫做实现,(可以多实现)
类与类 叫继承 (不能多继承)
接口和接口 叫继承(可以多继承)
接口和接口的多继承注意事项:
-
多个接口的抽象方法重复,没关系
-
多个接口的默认方法重复,必须重写