接口 (interface) 可以想想为一个纯的抽象类。他允许创建者规定一个类的基本形式:方法名,自编量表,以及返回类型,但是不规定方法体。接口也包含数据成员,但是他们都默认为 static 和 final。即接口只提供细节,不提供实现细节。接口中所有方法都是抽象的,这些抽象方法通过实现这一接口的不同类来完成,使用过程中,接口类变量可以表示任何实现该接口类的对象,这可以大限度的实现动态绑定,隐藏实现细节。
接口语法使用 interface 关键字声明,只声明类方法原型,不定义直接的方法类容,格式如下:
[接口修饰符]interface 接口名称 [<Type>][extends 父类名]{
....// 方法原型
}
值得注意的是,在接口声明中,java 允许省略声明数据成员的 final 关键字,方法的 public 以及 abstract 关键字。如下:
- interface Shape2D{
- final double pi = 3.14;
- public abstract double area();
- }
可以直接省略关键字:
- interface Shape2D{
- double pi = 3.14;
- double area();
- }
接口实现,接口自然不能象一般类一样使用 new 运算符可以产生对象。利用接口构造类的过程叫做接口实现。实现接口需要 implements 关键字,语法如下:
[类修饰符]class 类名 implements 接口名称 {
...// 实现 interface 的方法
}
下面例子实现 Shape2D。
- import static java.lang.Math.*;
- interface Shape2D{
- final double pi = 3.14;
- public abstract double area();
- }
- class Circle implements Shape2D{
- private double radius ;
- public Circle(double r){
- radius = r;
- }
- public double area(){
- return pi*radius*radius;
- }
- }
- class Rectangle implements Shape2D{
- private double width;
- private double length;
- public Rectangle(double w,double l){
- width = w;
- length = l;
- }
- public double area(){
- return width*length;
- }
- }
- public class Test{
- public static void main(String [] args){
- Shape2D circle = new Circle(2.0);
- Shape2D rectangle = new Rectangle(3.0, 5.0);
- System.out.println(circle.area());
- System.out.println(rectangle.area());
- }
- }
来源: