为什么使用接口?


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

Tags in this post...

面试题 相关文章推荐
在C语言中"指针和数组等价"到底是什么意思?
Mar 24 面试题
struct与class的区别
Feb 03 面试题
求两个数的乘积和商数,该作用由宏定义来实现
Mar 13 面试题
.NET程序员的数据库面试题
Oct 10 面试题
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
May 23 面试题
长青弘远的面试题
Jun 09 面试题
EJB的几种类型
Aug 15 面试题
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
Apr 07 面试题
介绍一下EJB的分类及其各自的功能及应用
Aug 23 面试题
Java Servlet API中forward() 与redirect()的区别
Apr 20 面试题
UNIX特点都有哪些
Apr 05 面试题
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
Apr 24 面试题
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
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
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
初识php MVC
2014/09/10 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
angularjs指令之绑定策略(@、=、&)
2017/04/13 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
python 合并文件的具体实例
2013/08/08 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
python多进程控制学习小结
2018/10/31 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
python中线程和进程有何区别
2020/06/17 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
一些关于MySql加速和优化的面试题
2014/01/30 面试题
经理秘书岗位职责
2013/11/14 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
推荐信格式范文
2014/05/09 职场文书
书法社团活动总结
2015/05/07 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android