1.接口的定义
是一个引用数据类型,是一种标准、规则
2.关键字
interface
3.命名规范
public interface 接口名{}
4.接口中可定义的成员
默认方法:public default 返回值类型 方法名(形参){}
静态方法:public static 返回值类型 方法名(形参){}
私有方法:(jdk9之后)private 私有方法
5.抽象方法定义和使用
1.定义
public abstract 返回值类型 方法名(形参);// public abstract 默认,不写也存在
2.使用
(1)定义实现类,实现接口
(2)重写抽象方法
(3)创建实现类对象,调用重写的方法
// 定义接口
public interface USB{
public abstract void open();
String close(); // 省略public abstract
}
// 实现接口
public class Mouse implements USB{
// 重写抽象方法
@override
public void open() {
System.out.println("鼠标");
}
@override
public String close() {
return "鼠标关闭";
}
}
6.默认方法
1.格式
public default 返回值类型 方法名(形参) {
方法体
}
return 结果;
2.使用
(1)定义实现类,实现接口
(2)默认方法可重写、可不重写
(3)创建实现类对象,调用方法
// 定义接口
public interface USB() {
// 定义默认方法
public default void methodDef() {
System.out.println("我是默认方法");
}
}
// 定义实现类
public class Mouse implements USB() {
@override
public void methodDef() {
System.out.println("我是重写默认方法"); // 这个函数可有可无
}
}
7.静态方法
1.格式
public static 返回值类型 方法名(形参) {
方法体
return结果
}
2.使用
接口名直接调用
// 定义接口
public interface USB() {
public static void methodSta() {
System.out.println("我是静态方法");
}
}
小结:默认方法和静态方法——作为接口中临时添加的小功能来使用
8.接口中的成员变量
1.格式
public static final 数据类型 变量名 = 值;
final代表最终的,被它修饰的变量,不能二次赋值,可以视为常量
2.使用
接口名直接使用
3.注意
(1)被static final修饰的变量名需要手动赋值
(2)习惯上将static final修饰的变量名大写
9.接口的特点
(1)一个接口可以继承多个接口
public interface Interface extends Interface_01, Interface_02...{}
(2)一个实现类可以实现一个 或 多个 接口
public class InterfaceImpl implements InterfaceA, InterfaceB...() {}
(3)一个子类可以继承一个父类的同时,实现一个 或 多个 接口
public class B extends B implements InterfaceA, InterfaceB...() {}
(4)继承 和 接口中 父类 的 抽象方法 都需要重写
(5)当一个类实现多个接口时,如果接口中的 抽象方法 或 默认方法 有重名 且 参数相同,只 需要重写一次