接口是抽象方法的集合。一个类实现一个接口,从而继承接口的抽象方法。
接口不是一个类。写一个界面类似写一个类,但它们是两个不同的概念。类描述对象的属性和行为。接口包含一个类实现的行为。
除非实现接口的类是抽象,接口中的所有方法必须在类中定义。
接口是一个类似的类中的方法如下:
接口可以包含任何数量的方法。
接口被写在同一个 .java 扩展名的文件,并提供相应的文件的名称的接口的名称。
接口的字节码会出现在一个 .class文件。
接口出现在包中,及其相应的字节码文件必须相匹配的包名的目录结构。
然而,一个接口是一类在几个方面有所不同,其中包括:
不能实例化一个接口。
接口不包含任何构造函数.
所有在接口中的方法都是抽象的.
接口不能包含实例字段。可以出现在一个接口的唯一字段必须声明static和final.
接口不是由一个类扩展,它是由类实现.
一个接口可以扩展多个接口.
声明接口:
interface关键字用于声明一个接口。下面是一个简单的例子来声明一个接口:
例子:
下面来看看,描绘封装一个例子:
/* File name : NameOfInterface.java */import java.lang.*;//Any number of import statements
public interface NameOfInterface{
//Any number of final, static fields
//Any number of abstract method declarations}
接口具有以下特性:
接口是隐式抽象的。声明一个接口,不需要使用abstract关键字.
在接口中的每个方法也隐式抽象的,所以abstract关键字不需要。
在接口中的方法是隐式公开的。
例子:
/* File name : Animal.java */interface Animal {
public void eat();
public void travel();}
接口的实现:
当一个类实现一个接口,可以认为该类同意将接口的具体行为。如果一个类不执行该接口的所有行为,该类必须自己声明为abstract。
类使用implements关键字来实现一个接口。下面的扩展声明的部分implements关键字出现在类声明。
/* File name : MammalInt.java */public class MammalInt implements Animal{
public void eat(){
System.out.println("Mammal eats");
}
public void travel(){
System.out.println("Mammal travels");
}
public int noOfLegs(){
return 0;
}
public static void main(String args[]){
MammalInt m = new MammalInt();
m.eat();
m.travel();
}}
这将产生以下结果:
Mammal eatsMammal travels
当重写接口中定义的方法有几个应遵循的规则:
检查型异常不应超过该接口的方法或那些由接口方法声明的子类中声明的那些其他的实现方法进行声明。
重写方法时,应保持接口的方法和相同的返回类型或子类型的签名。
一个实现类本身可以是抽象的,如果是这样的接口方法需要无法实施(实现)。
当要实现接口,需要了解有几个规则:
一个类可以同时实现多个接口。
一个类只能扩展一个类,但实现多个接口。
一个接口可以扩展另一个接口,类似于一个类可以扩展另一个类中的方法。
|
|