首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

(1) 接口

2012-12-26 
(一) 接口接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。接口中所有方法自

(一) 接口

接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
接口中所有方法自动地属于pubilic。因此,在接口中声明方法时,不必提供关键字public。
接口可能包含多个方法。接口中还可以定义常量。
接口中不能含有属性,也不能在接口中实现方法。提供属性和方法实现的任务应该由实现接口的那个类来完成。

为了让类实现一个接口,通常需要下面两个步骤:
1)将类声明为实现给定的接口。
2)对接口中所有方法进行定义

要将类声明为实现某个接口,需要使用关键字implements

声明接口中,没有将方法声明为public,是因为在接口中所有的方法都自动地是public,不过在实现接口时,必须把方法声明为pubic;否则,编辑器将认为这个方法的访问属性是包可见性,即类的默认访问属性,之后编译器就会给出试图提供更弱的访问权限的警告信息。

解释:让一个类使用Arrays.sort()排序方法必须让它compareTo方法,这是理所当然的,因为要向sort方法提供对象的比较方式。但是为什么不能在类中直接提供一个compareTo方法,而必须实现Comparable接口?
主要原因在与Java程序设计语言是一种强类型(strongly typed)语言,在调用方法的时候,编译器将会检查这个方法是否存在。在sort方法中可能存在下面这样的语句
if(a[i].compareTo(a[j])>0){
??? //rearrange a[i] and a[j]
}
为此编译器必须确认a[i]一定有compareTo方法。如果a是一个Comparable对象的数组,就可以确保拥有compareTo方法,因为每个实现Comparable接口的类都必须提供这个方法的定义。

1.接口的特性
(1)接口不是类,不能使用new运算符实例化一个接口;
(2)可以声明接口的变量;
(3)接口变量必须引用实现了接口的类对象;
(4)可以使用instanceof检查一个对象是否实现了某个特定的接口
(5)与可以建立两类的继承关系一样,接口也可以被扩展,即通过关键字extends继承另一个接口,但不能通过implements声明为实现某个接口(接口不能实例化)
(6)接口中不包含属性或将静态方法,但却可以包含常量。与接口中的方法都自动地被设置为public一样,接口中的属性将被自动设为public static final。
注:可以因为习惯或提高清晰度的考虑将接口方法标记为public,将常量标记为public static final。但Java语言规范却建议不要书写这些多余的关键字。
(7)有些接口只定义了常量,而没有定义方法。
(8)尽管每个类都只能够拥有一个超类,但却可以实现多个接口。这就为定义类的行为提供了极大的灵活性。使用逗号将实现的各个接口分隔开。

2.接口与抽象类
Java程序设计语言为什么要因为接口概念?
每个类只能扩展与一个类。但每个类可以实现多个接口。Java不支持多继承(C++支持),其主要原因是多继承会让语言本身变得非常复杂,效率也会降低。为了避免这类问题的出现,Java语言利用接口机制来实现多继承的大部分功能。

热点排行