1.什么是接口
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。
接口可以理解为一种特殊的类,接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的(JDK 1.8 以后,接口里可以有静态方法和方法体了,接口允许包含具体实现的方法,该方法称为"默认方法",默认方法使用 default 关键字修饰,JDK 1.9 以后,允许将方法定义为 private,使得某些复用的代码不会把方法暴露出去)。
为什么要用接口
因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限。
接口也被用来实现解耦。
接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。
接口的格式
[public] interface 接口名{
}
注意:
接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
public interface Animal {
void eat();
void run();
}
接口是Java中的一种类型,没有构造方法,而且是抽象类型,不能直接创建对象使用。和抽象类很相似,需要定义子类去实现接口。
implements关键字
用于实现接口
作用域修饰符 class 类名 implements 接口名1,接口名2,...{//接口可以同时实现多个接口
//实现所有的抽象方法
}
要求:
1.子类必须重写实现全部接口中所有的抽象方法,否则,类必须声明为抽象的类。
public class Cat implements Animal{
@Override
public void eat() {
System.out.println("吃鱼");
}
@Override
public void run() {
System.out.println("跑");
}
}
接口的继承
一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。
public interface Herbivores extends Animal{
}
接口的多继承
在Java中,类的多继承是不合法,但接口允许多继承。
在接口的多继承中extends关键字只需要使用一次,在其后跟着继承接口。
public interface Herbivores extends Animal,Cell{
}