知识大全 重新使用接口

Posted 基础

篇首语:生命之灯因热情而点燃,生命之舟因拼搏而前行。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 重新使用接口相关的知识,希望对你有一定的参考价值。

  就其本身来说 对象的概念可为我们带来极大的便利 它在概念上允许我们将各式各样数据和功能封装到一起 这样便可恰当表达 问题空间 的概念 不用刻意遵照基础机器的表达方式 在程序设计语言中 这些概念则反映为具体的数据类型(使用class关键字)   我们费尽心思做出一种数据类型后 假如不得不又新建一种类型 令其实现大致相同的功能 那会是一件非常令人灰心的事情 但若能利用现成的数据类型 对其进行 克隆 再根据情况进行添加和修改 情况就显得理想多了 继承 正是针对这个目标而设计的 但继承并不完全等价于克隆 在继承过程中 若原始类(正式名称叫作基础类 超类或父类)发生了变化 修改过的 克隆 类(正式名称叫作继承类或者子类)也会反映出这种变化 在Java语言中 继承是通过extends关键字实现的  使用继承时 相当于创建了一个新类 这个新类不仅包含了现有类型的所有成员(尽管private成员被隐藏起来 且不能访问) 但更重要的是 它复制了基础类的接口 也就是说 可向基础类的对象发送的所有消息亦可原样发给衍生类的对象 根据可以发送的消息 我们能知道类的类型 这意味着衍生类具有与基础类相同的类型!为真正理解面向对象程序设计的含义 首先必须认识到这种类型的等价关系   由于基础类和衍生类具有相同的接口 所以那个接口必须进行特殊的设计 也就是说 对象接收到一条特定的消息后 必须有一个 方法 能够执行 若只是简单地继承一个类 并不做其他任何事情 来自基础类接口的方法就会直接照搬到衍生类 这意味着衍生类的对象不仅有相同的类型 也有同样的行为 这一后果通常是我们不愿见到的   有两种做法可将新得的衍生类与原来的基础类区分开 第一种做法十分简单 为衍生类添加新函数(功能) 这些新函数并非基础类接口的一部分 进行这种处理时 一般都是意识到基础类不能满足我们的要求 所以需要添加更多的函数 这是一种最简单 最基本的继承用法 大多数时候都可完美地解决我们的问题 然而 事先还是要仔细调查自己的基础类是否真的需要这些额外的函数    改善基础类  尽管extends关键字暗示着我们要为接口 扩展 新功能 但实情并非肯定如此 为区分我们的新类 第二个办法是改变基础类一个现有函数的行为 我们将其称作 改善 那个函数   为改善一个函数 只需为衍生类的函数建立一个新定义即可 我们的目标是 尽管使用的函数接口未变 但它的新版本具有不同的表现    等价与类似关系  针对继承可能会产生这样的一个争论 继承只能改善原基础类的函数吗?若答案是肯定的 则衍生类型就是与基础类完全相同的类型 因为都拥有完全相同的接口 这样造成的结果就是 我们完全能够将衍生类的一个对象换成基础类的一个对象!可将其想象成一种 纯替换 在某种意义上 这是进行继承的一种理想方式 此时 我们通常认为基础类和衍生类之间存在一种 等价 关系——因为我们可以理直气壮地说 圆就是一种几何形状 为了对继承进行测试 一个办法就是看看自己是否能把它们套入这种 等价 关系中 看看是否有意义   但在许多时候 我们必须为衍生类型加入新的接口元素 所以不仅扩展了接口 也创建了一种新类型 这种新类型仍可替换成基础类型 但这种替换并不是完美的 因为不可在基础类里访问新函数 我们将其称作 类似 关系 新类型拥有旧类型的接口 但也包含了其他函数 所以不能说它们是完全等价的 举个例子来说 让我们考虑一下制冷机的情况 假定我们的房间连好了用于制冷的各种控制器 也就是说 我们已拥有必要的 接口 来控制制冷 现在假设机器出了故障 我们把它换成一台新型的冷 热两用空调 冬天和夏天均可使用 冷 热空调 类似 制冷机 但能做更多的事情 由于我们的房间只安装了控制制冷的设备 所以它们只限于同新机器的制冷部分打交道 新机器的接口已得到了扩展 但现有的系统并不知道除原始接口以外的任何东西   认识了等价与类似的区别后 再进行替换时就会有把握得多 尽管大多数时候 纯替换 已经足够 但您会发现在某些情况下 仍然有明显的理由需要在衍生类的基础上增添新功能 通过前面对这两种情况的讨论 相信大家已心中有数该如何做 cha138/Article/program/Java/hx/201311/26315

相关参考

知识大全 空接口和奇怪的接口方法

  开发控件时常常会遇到一些需要继承的接口但却不需要实现什么方法因为这个接口是空的  接口只包含只有方法属性索引器(有参属性)事件四种成员接口可以提供一组行为和契约当继承一个接口时你需要实现实现接口内

知识大全 全面剖析C#接口编程之定义接口

全面剖析C#接口编程之定义接口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  从技术上讲接口是一

知识大全 Comparable 接口和 Collection 接口分析

Comparable接口和Collection接口分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 mrico usb接口和mrico hdmi接口一样吗。数据线两者能否通用

mricousb接口和mricohdmi接口一样吗。数据线两者能否通用?接口不一样,micro微型的意思,中文过来就是微型的USB接口和微型的HDMI接口,microusb主要用于手机充电,3C产品充

知识大全 怎样设计合适的接口

  摘要我们在设计系统接口时经常会遇到这样的问题  我们的接口应该提供多少方法才合适?  我们的接口应该提供原子方法还是复合方法?  我们的接口是否应该封装(或者能否封装)所有的细节?  接口的设计需

知识大全 我家的电视没有HDMI接口也没有VGA,接口看了一下,只有什么USB接口要怎样才能和笔记本电脑连接

我家的电视没有HDMI接口也没有VGA,接口看了一下,只有什么USB接口要怎样才能和笔记本电脑连接  以下文字资料是由(本站网www.cha138.com)小编为大家搜集

知识大全 关于php 接口问题(php接口主要也就是运用curl,curl函数)

本篇文章是对php中的接口问题(php接口主要也就是运用curlcurl函数)进行了详细的分析介绍需要的朋友参考下   接口问题php调用接口最主要的就是使用curl抓取信息复制代码代码如下

知识大全 通过继承扩展接口

  利用继承技术可方便地为一个接口添加新的方法声明也可以将几个接口合并成一个新接口在这两种情况下最终得到的都是一个新接口如下例所示    //:HorrorShowjava  //Extendinga

高层建筑消防栓接口或软管接口的间距不应大于( )M。

高层建筑消防栓接口或软管接口的间距不应大于()M。A.30B.40C.50D.60【正确答案】A

高层建筑消防栓接口或软管接口的间距不应大于( )M。

高层建筑消防栓接口或软管接口的间距不应大于()M。A.30B.40C.50D.60【正确答案】A