为什么使用接口?


Posted in 面试题 onAugust 13, 2014
两个类中的两个类似的功能,调用他们的类动态的决定一种实现,那他们提供一个抽象父类,子类分别实现父类所定义的方法。
问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个超类,解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。
接口是可插入性的保证。
在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方 法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个 接口类型装载,传递实现了他的所有子类)。
我们关心的不是那一个具体的类,而是这个类是否实现了我们需要的接口。
接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。

Tags in this post...

面试题 相关文章推荐
PHP高级工程师面试问题推荐
Jan 18 面试题
精伦电子Java笔试题
Jan 16 面试题
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
Feb 22 面试题
一篇.NET面试题
Sep 29 面试题
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
Sep 10 面试题
C#如何允许一个类被继承但是避免这个类的方法被重载?
Feb 24 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
Jan 19 面试题
Linux如何命名文件--使用文件名时应注意
May 29 面试题
国外软件测试工程师面试题
Dec 09 面试题
如何用Python来进行查询和替换一个文本字符串
Jan 02 面试题
Java面试题:请说出如下代码的输出结果
Apr 22 面试题
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
Jan 26 面试题
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
Sep 09 #面试题
什么是接口(Interface)?
Feb 01 #面试题
你常见到的runtime exception
Sep 05 #面试题
PHP高级工程师面试问题推荐
Jan 18 #面试题
PHP开发工程师面试问题集锦
Nov 01 #面试题
一份比较全的PHP面试题
Jul 29 #面试题
Yahoo-PHP面试题4
May 05 #面试题
You might like
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
loading动画特效小结
2017/01/22 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python实现哈希表
2014/02/07 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
python3爬取各类天气信息
2018/02/24 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
解决python线程卡死的问题
2019/02/18 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
python 公共方法汇总解析
2019/09/16 Python
pygame实现飞机大战
2020/03/11 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
机械专业求职信范文
2014/07/15 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
给下属加薪申请报告
2015/05/15 职场文书
入党团支部推荐意见
2015/06/02 职场文书
盲山观后感
2015/06/11 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
利用javaScript处理常用事件详解
2021/04/14 Javascript
Golang表示枚举类型的详细讲解
2021/09/04 Golang
Python如何将list中的string转换为int
2022/07/15 Ruby