1、接口
interface Printable{
public static final int MAX = 100; //等价写法:int MAX = 100;
public abstract void add(); //等价写法:void add();
public abstract float sum(float x, float y);
}
-
接口体中包含常量的声明(没有变量)和抽象方法。
-
接口体中只有抽象方法,没有普通的方法。
-
接口体中所有常量的访问权限都是public,而且是static常量(允许省略public, final, static)
-
接口体中所有的抽象方法访问权限都是public,(允许省略public, abstract)
2、实现接口
1、重写接口中的方法
如果一个非抽象类实现了某个接口,那么这个接口必须重写这个接口中的所有方法。(和抽象类一样)
由于接口中的方法一定是 public abstract 方法,所以类在重写接口方法时不仅要去掉 abstract 、方法的访问权限一定要用 public 修饰,否则就降低了访问权限。
2、接口的细节
- 程序可以用接口名访问接口中的常量。但如果一个类实现了接口,那么该类可以直接在类体中使用该接口中的常量。
定义接口时,如果关键字interface前面加上public关键字,就叫它public接口。public接口可被任何一个类实现。
如果一个类不加public修饰,就称作友好接口,友好接口可被该接口在同一个包中的类实现。
如果父类实现了某个接口,那么子类自然实现了该接口,不用再写implements声明
接口也可以被继承,即通过extends声明一个接口是另一个接口的子接口,由于接口中的方法和常量都是public的,子接口将继承父接口全部方法和常量。
通过import语句不仅可以引入包中的类,还可以引入接口
import java.io.*; //同时引入了类和接口
3、abstract类与接口的比较
- abstract类和接口都可以有abstract方法。
- 接口中只可以有常量,不能有变量;而abstract类中既可以有常量,又可以有变量。
- abstract类中可以有非abstract方法,接口不可以。
4、小结
1、接口中的接口体只可以有常量和abstract方法。
2、和类一样,接口也是Java中一种重要的引用型数据类型,接口常量中只能存放实现该接口的类的实例(对象)的引用。
3、当接口变量中存放了实现接口的类的对象的引用后,接口变量就可以调用类实现的接口方法,这一过程被称为接口回调。