概念:
接口(英文:Interface),可以理解为一种特殊的抽象类。里面只有常量和抽象方法(不需要写abstract)。接口可以多实现(继承),类只能是单继承。
定义:
interface 接口名 [extends 父接口列表]{ final 类型 常量名=值;//常量 public void 方法名(形参);//抽象方法 }
注:
1.接口尽量的小,功能太复杂的接口是一种坏味道的接口。——接口分离原则。
2.接口定义的时候,接口名子,尽量是形容词,或者是描述性质的词。
Interface关键字用来声明一个接口。下面是接口声明的一个简单例子。
interface IAnimal {//定义IAnimal接口,约定俗成在接口名(Animal)前加I public void eat();//抽象方法 public void travel(); }
接口有以下特性:
- 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
- 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键子。
- 接口中的方法都是公有的。
接口的实现
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
实现一个接口的语法,可以使用这个公式:
[abstract] class 类名 extends 父类 implements 接口列表{ }
下面看一个实例
public class MammalInt implements IAnimal{//实现IAnimal接口 public void eat(){//实现方法并重写 System.out.println("Mammal eats"); } public void travel(){//实现方法并重写 System.out.println("Mammal travels"); } public int noOfLegs(){ return 0; } public static void main(String args[]){ MammalInt m = new MammalInt(); m.eat(); m.travel(); } }
在实现接口的时候,也要注意一些规则:
- 一个类可以同时实现多个接口。
- 一个类只能继承一个类,但是能实现多个接口。
接口的多重继承
在Java中,类的多重继承是不合法,但接口允许多重继承,。
在接口的多重继承中extends关键字只需要使用一次,在其后跟着继承接口。 如下所示:
public interface Hockey extends Sports, Event//继承了Sports和Event两个接口
以上的程序片段是合法定义的子接口,与类不同的是,接口允许多重继承,而 Sports及 Event 可能定义或是继承相同的方法