接口,可以将其想象成一个抽象类,它允许创建者规定一个类的基本形式:方法名、自变量列表以及返回值类型,但不规定方法主体。接口包含数据成员,但他们默认为static和final。
接口与抽象类非常相似,二者的不同点在于:接口允许两个看起来不相干的类之间定义共同行为。这一点在日常工作中有很大的作用。
接口的声明
Java中,通过关键字interface对接口进行声明。其格式为:
[接口修饰符] interface 接口名称 {
………… //方法的原型声明或静态常量
}
注意:接口中可以有数据成员与方法,但数据成员必须赋值且之后无法修改,声明时,可以省略数据成员的 final 关键字;方法必须为静态方法,同样,声明时可以省略public、abstract 关键字。
举例:
interface Shape1{
final double pi = 3.1415; //数据成员要进行初始化
public abstract double area(); //抽象方法,不需要定义
}
//同样可以写成以下形式
interface Shape1{
double pi = 3.1415; //省略final关键字
double area(); //省略public abstract 关键字
}
接口的实现
Java中,通过关键字 implements 对接口进行实现。
[类修饰符] class 类名称 implements 接口名称{
…………
}
注意:在实现一个接口时,来自接口的方法必须声明成public。
举例:
public class Circle implements shape{
double rad;
Circle(double r){ //含一个参数的构造方法
rad=r;
}
@Override
public double area() { //对接口中的抽象方法进行实现
return pi*rad*rad; //计算圆的面积并返回面积的值
}
}
对以上接口的类进行测试:
public static void main(String[] args) {
double radius=3;
Circle c=new Circle(radius);
double Area=c.area();
System.out.println("半径为"+radius +"的圆的面积为"+Area);
}
运行结果:
接口的多重继承
java中,一个子类不允许有多个父类的继承,但语序一个类可以实现多个接口。实现方法很简单,在关键字 implements 后面接口后加逗号(,)继续排要实现的接口就可以了。
[类修饰符] class 类名称 implements 接口1,接口2,接口3……
{
…… ……
{