第七章抽象类和接口 二、
原创
©著作权归作者所有:来自51CTO博客作者daizhemengxiang的原创作品,请联系作者获取转载授权,否则将追究法律责任
二、接口的基本概念
接口可以说是Java程序设计中最重要的概念之一了,“面向接口编程”是面向对象世界的共识,所以深刻理解并熟练应用接口是每一个学习Java编程人员的重要任务
1.接口概念
Java可以创建一种称作接口(interface)的类,在这个类中,所有的成员方法都是抽象的,也就是说它们都只有定义而没有具体实现,接口是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。定义接口的语法格式如下:
访问修饰符 修饰符 interface 接口名称 {
属性集(常量集)
抽象方法集
}
示例程序:Runner.java
public interface Runner {
int ID = 1; //常量
public void start(); //三个抽象方法,public都可以省去
public void run();
public void stop();
}
目前看来接口和类差不多。确实如此,接口本就是从抽象类中演化而来的,因而除特别规定,接口享有和类同样的“待遇”。比如,源程序中可以定义0~多个类或接口,但最多只能有一个public的类或接口,如果有则源文件必须取和public的类和接口相同的名字。和类的继承格式一样,接口之间也可以继承,子接口可以继承父接口中的常量和抽象方法并添加新的抽象方法等。
但接口有其自身的一些特性:
l 接口中声明的属性默认为,也只能是public static final的,因而在常量声明时可以省略这些修饰符;
l 接口中只能定义抽象方法,这些方法默认为public abstract的、也只能是public abstract的,因而在声明方法时可以省略这些修饰符;
l 和继承抽象父类类似,Java类还可以“实现”接口。
Java类在继承父类的同时可以同时实现多个接口,也继承了所有接口中的全部成分,仍然必须重写(实现)全部抽象方法,否则只能声明为抽象类。
类实现多个接口时,您需要做的仅是在关键字“implements”后用逗号分隔接口。总之,接口就是其它类需要实现的行为模板(以方法的形式表现)。
例:接口定义及实现
程序:Person.java
public class Person implements Runner {
public void start() {
//弯腰、蹬腿、咬牙、瞪眼、 开跑
}
public void run() {
// 摆动手臂、 维持直线方向
}
public void stop() {
// 减速直至停止、喝水。
}
}
2.为什么使用接口?
两个类中的两个类似的功能,调用它们的类动态地决定一种实现,那它们提供一个抽象父类,子类分别实现父类所定义的方法。
问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个父类,解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。
接口是可插入性的保证。
在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何父类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。
我们关心的不是哪一个具体的类,而是这个类是否实现了我们需要的接口。
接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。
接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处。
对于下述情况,接口是有用的:
(1)声明方法,期望一个或更多的类来实现该方法。
(2)揭示一个对象的编程接口,而不揭示类的实际程序体。(当将类的一个包输送到其它开发程序中时它是非常有用的。)
(3)捕获无关类之间的相似性,而不强迫类关系。
(4)可以作为参数被传递到在其它对象上调用的方法中
4.接口示例
4.1 接口示例1:接口定义,接口实现类
4.2 接口示例2:一个接口可以有多个不同的实现类
4.3 接口示例3:一个类可以继承,也可以实现
Java私塾跟我学系列——JAVA篇 网址:http://www.javass.cn 电话:010-68434236
上一篇:第七章抽象类和接口
下一篇:第七章抽象类和接口 三、
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
第七章抽象类和接口 三、
三、多重接口 &nbs
职场 接口 休闲 -
第七章抽象类和接口 四、
四、接口的基本思想 &nb
职场 接口 休闲 -
第七章抽象类和接口 五、
五、接口作为类型使用 &n
职场 接口 休闲 -
第七章 算法
一. 算法的基本概念一个问题可以有多个算法,每种算法效率不同一个算法具有五个特征:有穷性,确切性、输入项、
算法 数据结构 排序算法 时间复杂度 空间复杂度 -
第七章 索引
索引介绍,优化
职场 读书笔记 休闲 SQL Server -
第七章 异常
如果您想让 catch 块能够处理 try 块抛出的任何类型的异常,则必须在异常声明的括号内=
c++ 算法 捕获异常 抛出异常