接口(Interface)
一.接口通过使用关键词interface来声明,格式为: interface NAME { ... }
二.接口提中只能包含常量和抽象方法,不能包含变量和普通方法,并且接口中的所有常量和抽象方法都是public定义的,以下通过定义一个接口来说明:
interface Printable {
public final int max = 100; //等价写法:int max = 100;
public abstract void add ( ); //等价写法:void add ();
public abstract float sum (float x, float y);
}
三.接口也可以像类一样被继承,接口使用关键词extends继承另一个接口;
interface InterA {
public abstract void function1();
}
interface InterB extends InterA{
public abstract void function2();
}
四.接口中的抽象方法只是定义了必须具有该行为,具体的实现有类来完成。类使用关键词implements实现接口,当某个类实现了一个接口,该类必须重载所实现接口的所有方法,除非该类是一个抽象类。如何理解这一句话呢?首先可以分两层来理解:
1.普通类(即非抽象类)实现接口时必须重载该接口的所有方法(显示声明public);
2.抽象类也可以实现接口,抽象类实现接口时可以不完全重载该接口的所有方法,由继承该抽象方法的普通类来完成所有接口方法的重载。
例如普通类B实现接口A:
interface A {
public abstract void function1 ();
public abstract void function2 ();
}
public class B implements A{
public void function1 (){
/* ...*/
}
public void function2 (){
/* ...*/
}
}
五.Java舍弃了C++语言中多重继承的机制,当然Java可以通过接口实现与C++语言中多重继承的相同功能,即在Java中一个类可以同时实现多个接口,各个接口之间用逗号‘,’隔开,书写格式为:类 implements 接口1,接口2,接口3
(举例:class CLASS_A implements INTER_B,INTER_C,INTER_D{...} )