一.接口的定义
Java中的接口是纯抽象类,可以规定方法的原型,即方法名、参数列表和返回类型,但是不需要定义方法的主体。
Java中的接口是可以实现多继承的,其基本语法形式为:
[接口修饰符] interface 接口名称 [extends 父接口名]{
//方法的原型声明或静态变量
}
其中:
1.接口中的数据成员必须要有初值且不能再更改,即定义为final类型,但可以省略final关键字。
2.接口中的方法 必须是抽象方法,不允许包含方发的实现,可以省略public和abstract关键字。
二.实现单接口
接口的实现需要使用implements关键字,其基本语法如下:
public class 类名称 implements 接口名称 {
//在类体中实现接口的方法
}
其中:接口的实现类必须实现接口中所定义的所有方法,且来自接口的方法必须声明为public。
//声明一个接口Shape2D,包括PI和计算面积的方法原型
interface Shape2D{
final double pi = 3.14;
public abstract double area();//也可写作double area();
}
class Circle implements Shape2D{
double radius;
public Circle(double r){
radius = r;
}
public double area(){
return (pi*radius*radius);
}
}
class Rectangle implements Shape2D{
int width,height;
public Rectangle(int w,int h){
width = w;
height = h;
}
public double area(){
return(width*height);
}
}
public class InterfaceTester{
public static void main(String[] args){
Rectangle rect = new Rectangle(5,6);
System.out.println("Area of rect = " + rect.area());
Circle cir = new Circle(2.0);
System.out.println("Area of cir = " + cir.area());
Shape2D var1,var2;//声明接口类型的变量,并用它来访问对象
var1 = new Rectangle(5,6);
System.out.println("Area of var1 = " + var1.area());
var2 = new Circle(2.0);
System.out.println("Area of var2 = " + var2.area());
}
}
//运行结果
Area of rect = 30.0
Area of cir = 12.56
Area of var1 = 30.0
Area of var2 = 12.56
三.实现多接口的继承
一个类可以实现多个接口,通过这种机制可以实现对设计的多重继承。其基本语法为:
[类修饰符] class 类名称 implements 接口1,接口2,...{
//实现接口方法
}
例
interface Color{
void setColor(String str);
}
class Circle implements Shape2D,Color{
double radius;
String color;
public Circle(double r){
radius = r;
}
public double area(){
return (pi*radius*radius);
}
public void setColor(String str){
color = str;
System.out.println("color=" + color);
}
}
public class MultiInterfaceTester{
public static void main(String[] args){
Circle cir;
cir = new Circle(2.0);
cir.setColor("blue");
System.out.println("Area=" + cir.area());
}
}
//输出结果
color=blue
Area=12.56
四.接口的扩展
若一个接口继承了父接口,在类中实现接口方法时需要同时实现父接口中定义的方法。接口的继承是多继承,其基本语法为:
interface 子接口的名称 extends 超接口的名称1,超接口的名称2...{
//定义方法名称及静态变量
}
interface Shape{
double pi = 3.14;
void setColor(String str);
}
interface Shape2D extends Shape{
double area();
}
class Circle implements Shape2D{
double radius;
String color;
public Circle(double r){
radius = r;
}
public double area(){
return (pi*radius*radius);
}
public void setColor(String str){
color = str;
System.out.println("color=" + color);
}
}
public class ExtendsInterfaceTester{
public static void main(String[] args){
Circle cir;
cir = new Circle(2.0);
cir.setColor("blue");
System.out.println("Area=" + cir.area());
}
}