一、接口
1、接口简介
接口就像一个只有抽象方法的类,一个接口显然不能被实例化,接口会被其他的类通过类似于继承的方法实现。当一个类实现接口的时候,这个类要重写接口中所有的方法。
接口的一般形式如下:
public interface InterfaceName
{
(Method headers . . .)
}
接口的形式与类十分相似,它只是将“class”变成了“Interface”。下面看一个例子:
public interface Displayable
{
void display();
}
这个类将实现上面的接口:
public class Person implements Displayable
{
private String name;
// Constructor
public Person(String n)
{
name = n;
}
// display method
public void display()
{
System.out.println("My name is " + name);
}
}
如果你希望实现一个接口,那么就在类的头中加上implements关键字,在implements关键字后加上这个类实现的接口名即可。
注意,接口中的方法都是隐式public的(也必须是public的),因此接口中的方法并不需要访问标识符(写public也行,但是没有必要)。
一个接口就像一个合同,规定了类里需要有哪些方法。但是其实接口也只是指定了方法的返回类型,方法的名字,以及方法的参数,方法具体干什么并没有指定,你可以写一个和方法体和方法名完全不相干的方法,但是这是不符合编程习惯的。
2、接口中的字段
接口中也可以有字段的声明,但是这些字段一旦被声明,就将自动地被设置为final和static的,所以你必须在声明的同时赋值,看下面的例子:
public interface Doable
{
int FIELD1 = 1;
int FIELD2 = 2;
(Method headers . . .)
}
FIELD1和FIELD2都是final static int。所有实现这个接口的类都可以访问这两个字段。
3、实现多个接口
你可能会疑惑:为什么抽象类和接口那么相似,还要发展出两个概念呢?那是因为Java中一个类只能有一个直接的超类,但是却可以同时实现多个接口。当一个类实现多个接口的时候,它必须重写这些接口中所有的方法。下面是一个类实现多个接口的例子:
public class MyClass implements Interface1,
Interface2,
Interface3
4、接口与UML
在UML图中,接口是像类一样绘制,但是接口的名字和方法名字要写成斜体,并且<<interface>>标签要写在接口名称的上面。类和接口之间的关系被称为实现关系(类实现接口)。类和接口通过一条有箭头的虚线连,箭头指向接口。