- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java语言提供了一种接口(interface)机制
Java语言提供的一种接口(interface)机制
Java语言提供了一种接口(interface)机制。这种接口机制使Java的面向对象编程变得更加灵活。我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现。在《Thinking in Java》一书中,作者对接口有这样的描述:“接口(interface)比抽象(abstract)的概念更进了一步。你可以把一个接口看成是一个纯的抽象类。”理解并用好接口机制将帮助我们更好的掌握Java这种面向对象的编程语言。下面我们来讨论一下接口的使用规则以及相关的应用。
一、接口的定义及实现
定义接口和定义类相似,只是要把 class关键字换为 interface。定义方法时只需要方法名,返回类型和参数列表,不能有方法体。接口中可以定义字段,这些字段都被暗指为 static 和 final,因此应该根据需要先定好这些字段的值。例如:
public interface Flyable {
void fly();
}
public interface Talkable {
void talk();
}
public interface Message {
int MAX_SIZE = 4096;
String getMessage();
}
上面定义的几个接口中,Flyable 和 Talkable 只定义了一个方法,而 Message 里除了方法外还有一个字段 MAX_SIZE。可以看出这些接口只定义了类的表现形式,而不包含任何实现,所以不能直接使用。要使用这些接口就需要有相应的类去实现它们。实现接口时 应该先在类名后用 implements 关键字申明将要实现的接口,如果要实现多个接口,应该用逗号将它们隔开,然后一一实现这些接口中定义的方法。如下面的例子:
public class Parrot implements Flyable, Talkable {
public void fly() {
System.out.println(Flying like a parrot…);
}
public void talk() {
System.out.println(Hello! I am a parrot!);
}
}
public class TextMessage implements Message {
String message;
public void setMessage(String msg) {
message = msg;
if (message.length() MAX_SIZE)
message = message.substring(0, MAX_SIZE);
}
public String getMessage() {
return message;
}
}
在 Parrot(鹦鹉)例子中,我们用接口 Flyable 来表示飞行能力,Talkable 表示说话能力,但它们并不包含具体实现。而 Parrot 同时具有这两种能力,所以我们为 Parrot 类同时实现了 Flyable 和 Talkable 这两个接口。同样我们还可以定义一个Swallow(燕子)类,但燕子只有飞行能力,所以我们只需要为 Swallow 实现 Flyable 就行了。因为它们各自的的飞行方法有所不同,所以它们有各自关于飞行的具体实现。
另外,正因为一个类可以同时实现多个接口,使得Java的面向对象特性变得非常灵活。运用这种特性,我们可以实现类似C++语言中多继承那样的特性,甚至更灵活的一些特性。下面我们来讨论一下接口在实际中的应用。
二、用接口来定义一些全局变量
因为接口内的字段都是static和final的,所以我们可以很方便的利用这一点来创建一些常量。例如:
public interface Constants {
String ROOT = /root;
int MAX_COUNT = 200;
int MIN_COUNT = 100;
}
在使用时可以直接用Constants.ROOT这样的形式来引用其中的常量。我们还可以用下面这种方法来创建初始值不确定的常量。
public interface RandomColor {
int red = Math.random() * 255;
int green = Math.random() * 255;
int blue = Math.random() * 255;
}
其中red、green和blue的值会在第一次被访问时建立,然后保持不变。
三、用接口来定义基本数据结构
在设计
您可能关注的文档
最近下载
- 2025不动产登记代理人《地籍调查》真题卷(附答案).pdf VIP
- “三重一大”决策事项表附表.doc VIP
- (2025秋新版)人教版数学三年级上册教学计划.pdf VIP
- 《认识自然数》(课件)四年级上册数学冀教版.pptx
- 基于MQTT的远程数据采集与实时控制系统设计和应用.docx VIP
- SY∕T 5520-2019 圈闭评价技术规范.pdf
- 【MARS出品】中国分省地图(具体到县级)独家版.ppt VIP
- 建筑环境与能源应用工程专业英语14.pdf VIP
- 2025年不动产登记代理人考试《不动产权力理论与方法》真题卷(含答案).pdf VIP
- 《化工热力学》详细课后习题答案(陈新志).pdf VIP
文档评论(0)