java之旅 (六)接口
来源:互联网 发布:上门维修网络 编辑:程序博客网 时间:2024/06/15 05:54
interface关键词进一步强化了abstract的概念。你可以把它想成“纯的”abstract类。它能让开发人员定义类的形式:方法名,参数列表,返回值的类型,但是却没有方法的正文。interface也可以包括数据成员,但是它天生就是static和final的。interface只提供形式,不谈实现。
要创建一个实现了某个(或者某组)interface的类,就必须使用implements关键词。它的意思是,“interface要告诉你‘类长什么样子’,implements要告诉你‘它是怎么工作的’”
你可以把interface里的方法声明成public的,但是即便不讲,它们也是public的(这是自动的)。所以当你implements一个interface的时候,你必须把这个interface的方法定义成public的。(除非你有特殊的用途要定义成其他的)
java的“多重继承”:
java并不强制你一定要去继承abstract还是“具体”的类,但是你只能继承一个非interface的类。但是你可以根据据需要实现任意多个interface,这样你就能创建一个类似c++中“多重继承”的类。
接口的真正目的:能够上传到多个基本类型。接口的令一个作用是和“把abstact类用作基类”完全相同的:就是要禁止客户程序员去创建这个类的对象,并且重申这是一个接口。
到底是用interface还是abstract类?
interface既给了你abstract类的好处,又给了你interface的好处,因此只要基类的设计里面可以不包括方法和成员变量的定义,你就应该优先使用interface。
接口继承:
通常情况下,extends只能用于类,但是由于一个interface可以由多个接口拼接而成,因此创建新的一个interface的时候可以使用extends来表示其多个“基接口”。
//////////////////////////////////////////////////////////////////////////////////////////////////
interface Monster
{
void menace();
}
interface DangerousMonster extends Monster
{
void destroy();
}
interface Lethal
{
void kill();
}
interface Vampire extends DangerousMonster, Lethal
{
void drinkBlood();
}
///////////////////////////////////////////////////////////////////////////////////////////////
常量的分组:由于interface数据成员自动就是static和final 的,因此interface是一种非常方便的,创建一组常量值的工具,这点同c和c++里的enum很类似。例如:
///////////////////////////////////////////////////////////////////////////////////////////////////
public interface Months
{
int
JANUARY = 1, FEBRUARY = 2, MARCH = 3,
APRIL = 4, MAY = 5, JUNE = 6, JULY = 7,
AUGUST = 8, SEPTEMBER = 9, OCTOBER = 10,
NOVEMBER = 11, DECEMBER = 12;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
为了安全期间可以把上面封到一个包里,不过最终你得到的只是一个int,看起来还是不如enum安全。不过抛开interface,我们可以创建一个final类,定义上一些static final的对象就没问题了。
提示:1,There’s also a month field in java.util.Calendar.
2,Apache的Jakarta Commons项目下包含了一些创建枚举类型的工具,参见http://jakarta.apache.org/commons,下面的 “lang,”在org.apache.commons.lang.enum.这个包里。 这个项目里面还有一些别的有用的类库。
- java之旅 (六)接口
- java基础(六)------接口
- 菜鸟之旅——Java入门篇(六)接口
- 一大波Java来袭(六)——Java集合之Collection和Iterator接口
- Java(六)接口与内部类
- Java核心技术(六) —— 接口
- Java面向对象(六) 接口
- java容器(六)-Map接口
- Java面向对象(六)接口
- 【Java安全技术探索之路系列:Java可扩展安全架构】之六:JCE(二):JCE类和接口
- java之旅之接口
- Think in Java(六):接口
- Python接口测试之对MySQL的操作(六)
- java接口和类(六)用Class获取类
- java容器类-----------------Map接口解析(六)
- JAVA学习笔记(六)抽象类与接口
- Hadoop学习笔记(六)---HDFS java接口
- Java基础(六)——接口和抽象类
- java之旅 (二)基本概念
- CATIA启动速度加快小技巧
- java之旅 (三)初始化和清理
- java之旅 (四)隐藏实现 & 复用类
- java之旅 (五)多态性
- java之旅 (六)接口
- 找到的我以前一直理想的生活 :)
- Struts 教程I:一个用jbuilder X 做的最简单的helloworld的struts例子
- [转载]把虚拟主机空间里的某个文件夹设成虚拟目录
- 网络监听技术概览(转)
- 要学的傻一点
- 第一帖~~~~昨天比较郁闷~~~
- 处事哲理名言
- 游戏开发新手入门指导(Q&A)