博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(一) 接口
阅读量:4048 次
发布时间:2019-05-25

本文共 1323 字,大约阅读时间需要 4 分钟。

接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。

接口中所有方法自动地属于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语言利用接口机制来实现多继承的大部分功能。

转载地址:http://rayci.baihongyu.com/

你可能感兴趣的文章
模拟屏学习资料_电视标准:接收制式
查看>>
模拟屏学习资料_什么是PAL制式
查看>>
模拟屏学习资料_模拟视频 入门
查看>>
模拟屏学习资料_缩写补充(1)
查看>>
关于字符串逆序的问题
查看>>
嵌入式及手机开发[笔试题目]
查看>>
Sony Ericsson Z610i
查看>>
MTK的暗码
查看>>
LCD的接口分类
查看>>
LCD点屏心得
查看>>
可重入函数
查看>>
C语言嵌入式系统编程修炼之道
查看>>
linux内核驱动开发笔试题
查看>>
XX公司招聘C笔试题
查看>>
×××公司linux内核驱动开发招聘笔试题
查看>>
驱动版Hello World
查看>>
sizeof,终极无惑(上)
查看>>
常考--宏与内联函数
查看>>
C语言面试题大汇总
查看>>
C/C++ 笔试、面试题目大汇总
查看>>