1. 接口的关键字interface
public interface Irunable {
}
接口的定义跟类类似,只需要把class
关键字换成interface
即可。
接口名称的书写一般以大写字母I
开头,后面一般是形容词词性的单词。
2. 为了保持代码的简洁性,接口中的属性和方法尽量不要加任何修饰符号,
public interface Irunable {
//成员变量
public static final int a = 0;
int b = 1;//推荐这种形式
//抽象方法
public abstract void fun1();
public void fun2();
abstract void fun3();
void fun4(); //推荐这种形式
}
接口中也可以定义成员变量,和抽象方法。
只不过接口中的成员变量默认都是public static final
修饰的,接口中的抽象方法默认被public abstract
修饰的。
写不写public static final
或public abstract
没有区别,都默认是一个静态常量或抽象方法。
以上四种定义抽象方法的格式都是正确的,但更推荐fun4()
函数的定义格式,
阿里的编码规范中约定,接口中的属性和方法不要加任何修饰符号,保持代码的简洁性
3. 接口和抽象类一样,不能被实例化
4. 接口中不能有构造方法,也不能有普通的方法实现
5. 接口中的方法,要想有具体的实现,可以用static
或者default
修饰
接口中的方法默认都是public
的抽象方法,因此不能用private
修饰
6. 接口本身是多个类公共的行为规范,因此不能直接使用,必须通过一个类来实现
类和接口之间使用关键implements
进行关联,如果一个类要实现一个接口就必须在类当中重写接口中所有的抽象方法。
通过Test,在键盘类
和鼠标类
中实现接口
例子:
7. 如果一个类没有实现接口中所有的抽象方法,则这个类必须设置为抽象类
使用abstract
设置为抽象类
8. 一个类可以实现多个接口,每个接口中的方法都要实现,否则必须设置为抽象类
Dog
类继承了Animal
类,且实现了Iswimable
和Irunable
接口,分别重写了两个接口中的抽象方法
9. 接口之间也可以继承
接口AB
继承了接口A
和接口B
,如果要实现接口AB
就需要重写三个接口中的抽象方法testA
,testB
,testC
。