6.1.1接口概念—接口不是类,而是类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
例:Arrays类中的sort方法可以对对象数组进行排序,但要求满足前提—对象所属的类必须实现了Comparable接口。
Public interface Comparable泛型类型
{
Int compareTo(T other)
}
注\接口中的所有方法自动属于public。因此,在接口中声明的方法,不必提供关键字public。
上面的接口只有一种方法,而有些接口可能包含多种方法,在接口中还可以定义常量,但是接口接口绝不能含有实列域。
提供实列域和方法实现任务应该由实现接口的那个类来完成。
为了让类实现一个接口,需要两个步骤(这里以Employee为例)
1)将类声明为实现给定接口
2)对接口的所有方法进行定义。
—class Employee implements Comparable
Public int compareTo
{
Public int compareTo(Employee other)
{
Return Double.compare(salary,other.salary)
}
…}
因此,要让一个类使用排序服务必须让他实现compareTo的方法,那么,为什么不能再Employee类直接提供一个CompareTo方法,而必须实现Comparable接口——主要原因是在于java程序设计语言是一种强类型(Strongly typed)语言。在调用方法时,编译器将会检查这个方法是否存在。
6.1.2接口的特性
1.接口不是类,尤其不能使用new运算实例化一个接口:x=new comparable(…)//ERRROR
2.尽管不能构造接口对象,但却声明接口的变量:Comparable x;
3.但是接口变量必须引用实现了接口类的对象:x=new Employee(…)
接下来,如同使用instanceof检查一个对象是否属于某个特定类一样,也可以使用instance检查一个对象是否实现了某个特定的接口:if(anObject instanceof Comparable){…}
注/可以建立类的继承关系一样,接口也可以被扩展,因为允许存在多条从具有较高通用性的接口道较高专用性的接口的链。
例如,假设有一个称为Moveable的接口:
Public interface Moveable偶,
{
Void move(double x,double y);
}
然后,可以以它为基础扩展一个叫做Powered的接口:
Public interface powered extends Moveable
{
double milesPerGallon();
Double SPEED_LIMIT=95;
虽然在接口中不能包含实例域或静态方法,但可以包含常量。
}
与接口中的方法都自动地被设置为public一样,接口中的域将被自动设为public static final。
尽管,每个类只能拥有一个超类,但却可以实现多个接口。
例:class Employee implements Cloneable, Comparable
1万+

被折叠的 条评论
为什么被折叠?



