通俗基础教程
电脑操作教程
电脑怎样拨号上网
如何做个人网页
怎样做局域网
Word教程(文字处理)
图形图象处理入门
经典提高教程
怎样使用代理服务器
如何做无盘工作站
Photoshop教程
Dreamweaver3教程
Flash4&5教程
Firework3教程
Frontpage2000教程
Authware教程
Office2000教程
如何制作动画图片
OICQ&ICQ使用方法

高手学习指南

硬件升级技巧
CGI教程
ASP教程

PHP教程

注册表使用技巧
路由器的设置
网站建设指南
SQL
最近更新:
网页编辑
相关内容

创建接口


Java语言支持使用定义在类层次中任何地方的任何类中行为的
协议的接口。

什么是接口?

在Java中,接口是不相关的对象相互交互的设备。Java接口与
协议很相似。实际上,其它面向对象语言也有Java的接口的
功能,但是它们称为协议。

Java接口定义了一套方法,但没有实现它们。一个实现接口的
类可以实现定义在这个接口中的所有方法,因此可以实现一定
的行为。

定义:接口是方法定义(而不实现)的被命名的集合。接口也
可以包括常量定义。

最好通过例子来理解接口,所以让我们看看一个接口和两个类
交互的例子。然后我们在抽象概念上讨论接口。

例子:AlarmClock和Sleeper

AlarmClock类是一个服务提供者 - 经过一定的时间后通知对象。

为了得到AlarmClock的“sleepers”清单,一个对象必须做两
件事:

让闹钟把它叫醒。
实现wakeUp方法。
第一步由对象调用AlarmClock的letMeSleepFor方法实现:

public synchronized boolean letMeSleepFor(Sleeper
theSleeper, long time) {
int index = findNextSlot();
if (index == NOROOM) {
return false;
} else {
sleepers[index] = theSleeper;
sleepFor[index] = time;
new AlarmThread(index).start();
return true;
}
}
如果AlarmClock有空间,它就注册sleepers,为它开始一个新
的AlarmThread,然后返回true。经过一段特定的时
间,AlarmClock调用theSleeper的wakeUp方法。

然后是第二步,一个想使用AlarmClock的对象必须实现wakeUp
方法(于是AlarmClock可以在过了一段时间后调用它来通知
对象)。这通过被注册的对象的数据类型实现。

letMeSleepFor方法的第一个参数是希望被叫醒的对象。这个参
数的数据类型是Sleeper,使用了接口的名字:

public interface Sleeper {
public void wakeUp();

public long ONE_SECOND = 1000; // in milliseconds
public long ONE_MINUTE = 60000; // in milliseconds
}
Sleeper接口定义了wakeUp方法但没有实现之。它也定义了两个
有用的常数。实现这个接口的类继承了这两个常数,并且必须
实现wakeUp。

任何是Sleeper的对象都实现了这个接口。这意味着它实现了接
口定义的所有方法。于是一个Sleeper对象实现了wakeUp方法,
满足了第二个需求。

例如,下面的类GUIClock实现了Sleeper接口,显示当前时间,
并使用一个AlarmClock对象每分钟唤醒它一次,达到更新的
目的:

class GUIClock extends Applet implements Sleeper{
. . .
public void wakeUp() {
repaint();
clock.letMeSleepFor(this, ONE_MINUTE);
}
}
这是一个运行的GUIClock的小应用程序:

 

 

为什么不只用抽象类?

很多程序员疑惑接口和抽象类有什么区别。接口只是未实现的
因此是抽象方法的清单。下面的Sleeper类与Sleeper接口是一回
事吗?

abstract class Sleeper {
public abstract void wakeUp();
}
不,这两者不同。如果Sleeper是一个抽象类,那么所有希望使
用AlarmClock的对象都必须是从Sleeper继承的类的实例。然而,
很多希望使用AlarmClock的对象已经有了一个父类。例
如,GUIClock是一个Applet,它必须是运行在浏览器中的小应用
程序。但是Java不支持多个继承。因此GUIClock不能既是一
个Sleeper,又是一个Applet。所以要用一个接口替代。

这是对问题的实际解释。概念性的解释是这样的:AlarmClock不
能在它的用户上强制类关系。是什么类没有关系,要关心的是
它们实现了一个特殊方法。

那么接口提供了多个继承吗?

接口一般被描述成多个类继承的替代物。虽然接口可以解决类
似的问题,接口和多个类继承还是不同的,尤其是:

一个类只固定地从一个接口继承。
类不能从接口中继承方法的实现。
接口层次独立于类层次。实现相同接口的类不一定通过类层次关联。多个继承不是这样。
然而,Java允许多个接口继承。也就是说,一个接口可以有多个
父接口。

那么,接口能做什么呢?

接口可以用在下列情况下:

不用强制类关系而在不相关的类之间实现相似性。
定义一个或多个类希望实现的方法。
不用类而实现对象编程(称为匿名对象)。

什么是Java
Java能做什么
Java怎样改变我的生活
"Hello World"小应用程序
常见编译和解释错误
面向对象编程
什么是对象?
什么是消息?
什么是类?
什么是继承?
Java语言
变量和数据类型
操作符
表达式
流程控制
数组和字符串
类的简介
对象的生命周期
创建类
一个类的实例
管理接口
创建接口
 
 
 
 
 
上一页
下一页
收集整理
服务大家




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有