博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
细说Java的接口(二)
阅读量:6805 次
发布时间:2019-06-26

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

9.1.4  接口pk. 抽象类

接口和抽象类虽然有相似之处,即它们都可能有抽象方法。但却有本质的不同。首先在代码编写方面,它们的语法要求存在差异。从这个角度讲,接口是纯粹抽象的类;而抽象类是一般类到接口之间的过渡。表
9.1
列出了接口和抽象类在语法方面的不同。
9.1  
接口和抽象类的区别
    

  
  

静态常量

一般变量

常量

静态变量

静态常量

抽象方法

方法

静态方法

抽象方法

抽象静态方法

使用关键字
interface

使用关键字
abstract

 

可以看出,
Java
对接口的语法有严格的限制和要求;而抽象类则是一种松散形式的抽象。它的特例可以和一般类一样,只不过标有关键字
abstract
而已。
接口和抽象类都不能创建对象。它们的不同主要在于应用。抽象类源于
C++
语言。但在
C++
中没有
abstract
关键字来定义抽象类,只是利用
virtual
来表示某个将要实现多态的方法,相当于名义抽象类。
Java
中的抽象类,还是
C++
中名义上的抽象类,一般用来进行和多态有关的运行和操作。
接口的主要用途可以归纳为如下几点:
l  
事件处理规范。如
API
中的
EventListener
ActionListener
WindowListener
MouseListener
等等。
l  
识别对象规范。如
API
中的
Comparable
Cloneable
,等等。
l  
输出输入规范。如编程人员自定义的
Printable
FileWriter
Readable
,等等。
l  
连接协议规范。如
Connectable
等。
l  
特殊变量规范。如枚举变量协议接口
Enumable
l  
高层次组织和控制结构规范。如
API
中的
Collection 
接口,
List
接口,等等。
l  
具有普遍意义的周边和附属功能规范。如
Recycleable
Colorable
Positionable
,等等。
本章以下小节对接口在这些方面的应用作进一步讨论。表
9.2
列出了接口和抽象类在应用方面的比较。
9.2  
接口和抽象类在应用方面的比较
    

    

  
  

多重继承

一个类可以完善多个接口,即支持间接多重继承。

一个类只可以继承一个抽象类。

第三方开发和

扩展

可以在任何第三方已存在类的代码中实现接口。

为了继承抽象类,第三方类必须重写子类。

like a
”与“
is a

通常对边缘和附属功能提出协议性规范;具有广泛性。

通常定义对象的核心形态和行为。

同性

适用于所有实现共享签名和协议的不同应用。

适用于各种不同的实现、但都基于共同状态和行为源的应用。

自由度

只要“像我”。

必须“是我”。

可维性

相同

相同

速度

相对慢

相对快

简洁性

高。无须关键字,所有数据自动为公有静态常量。所有方法自动为抽象。

低。关键字不可省略。

可扩充性

如果在接口中添加新方法协议,必须修改所有应用它的类的代码。

如果添加完善了的新方法,无须对所有应用它的类进行修改。

9.1.5  常用API接口

       
Java API
的每个包中,几乎都规定了接口,以及完善这些接口需要的技术支持和处理的异常。随着本书的深入讨论,将逐步介绍应用和完善一些常用接口的实例。表
9.3
中列出了这些
API
常用接口。
9.3  
常用
API
接口
  
  

常量
/
方法

    

    

讨论章节

Cloneable

无。推荐覆盖
Object.clone()

java.lang

对象拷贝

9

Comparable

int compareTo(Object o)

java.lang

对象排序

10

Runnable

void run()

java.lang

线程运行

14

续表

  
  

常量
/
方法

    

    

讨论章节

AudioClip

void loop()

void play()

void stop()

java.applet

音频播放

20

ActionListener

void actionPerformed(ActionEvent)

java.awt.event

事件处理

17
18

WindowConstants

int DISPOSE_ON_CLOSE

int DO_NOTHING_ON_CLOSE

int EXIT_ON_CLOSE

int HIDE_ON_CLOSE

javax.swing

窗口控制

18

 

本文转自高永强51CTO博客,原文链接:http://blog.51cto.com/yqgao/178420
 ,如需转载请自行联系原作者
你可能感兴趣的文章
linux的rsync工具的常用选项及ssh同步介绍
查看>>
oracle内存体系(二)
查看>>
ReflectASM的使用
查看>>
智能家居监控移动手机组态现实生活中的应用
查看>>
笔试题、面试题
查看>>
shell 数组
查看>>
Linux操作系统的安装
查看>>
服务器RAID
查看>>
python函数是引用传递(对可变对象而言)
查看>>
Cisco ASA防火墙简易配置与调试手册
查看>>
Node.js搭建聊天室
查看>>
Rob Pike的5个编程原则
查看>>
Expression Blend实例中文教程(7) - 动画基础快速入门Animation
查看>>
《第一行代码》1day~了解全貌
查看>>
复习javaIO 之File类
查看>>
How to install snmpwalk snmpget on CentOS 6.4 6.3 5.9 Redhat RHEL Fedora
查看>>
最小生成树
查看>>
Mybatis中配置Mapper的方法
查看>>
Java基础学习总结(19)——Java环境变量配置
查看>>
Mvc5+Entity Framework6 之二----在MVC中用Entity Framework实现基本的CRUD
查看>>