什么是接口
接口是一种特别的“抽象类”,它比抽象类更加抽象。接口是一种规范,必须由类来实现。接口具有比类更高的抽象层次,在我看来,接口就像是类的模板。
接口的声明:
<span style="font-size:14px;">interface InterfaceTest {
void fun1();
void fun2();
}</span>
对于接口的声明可以使用的修饰符只有public和abstract,其他修饰符均不合法,而没有修饰符时,接口的声明默认是公有抽象的
接口的实现
接口不能实例化出对象,类可以实现接口,类实现接口使用的是implements关键字
<span style="font-size:14px;">class Test implements InterfaceTest{
public void fun1(){}
public void fun2(){}
}</span>
使用接口的注意事项
①接口的成员方法默认是public abstract的,而且成员方法能使用的权限修饰符只有public和default
②接口的变量成员默认是public static final的,而且变量成员能使用的修饰符只有public,final和static,所以接口的成员变量在定义时要同时赋值
③若用一个非抽象类来实现一个接口,那么这个类必须要实现这个借口的所有方法,而抽象类则不必
④接口不可以实例化处对象,也没有构造方法(注意与抽象类区分)
⑤可以声明接口的引用变量,而接口的引用变量可以指向实现了这个接口的类所实例化的对象,而这也是一种多态
接口的继承
接口的继承使用的是extends关键字,但类继承不一样,接口继承支持多继承,接口多继承时extends只使用一次
例:
public class Main {
interface interfaceA{
int propertyA=5;
void testA();
}
interface interfaceB{
int propertyB=10;
void propertyB();
}
interface interfaceC extends interfaceA,interfaceB{
int porpertyC=15;
void propertyC();
}
public static void main(String[] args) {
System.out.println(interfaceC.propertyA);
System.out.println(interfaceC.propertyB);
System.out.println(interfaceC.porpertyC);
}
}
注:接口多继承时,子接口最好不要让变量名重名,