Thinking In Java学习进程---对象的入门1.5 继承:重新使用接口
来源:互联网 发布:超级sql注入工具 使用 编辑:程序博客网 时间:2024/06/03 23:39
个人感觉1.4的讲解并不是很重要,而且概念性的东西比较薄弱,没有什么实质性的意义已经省略了,中间断了两天,么有继续写好了现在开始继续写1.5的笔记
继承:我们费尽心思做出一种数据类型后,假如不得不又新建一种类型,令其实现大致相同的功能,那会是一件非常令人灰心的事情。但若能利用现成的数据类型,对其进行“克隆”,再根据情况进行添加和修改,情况就显得理想多了。
继承并不完全等价于克隆,在继承过程中,若父类发生了变化,修改过的子类也会反映出这种变化。在Java语言中,继承是通过extends关键字实现的 使用继承时,相当于创建了一个新类。这个新类不仅包含了现有类型的所有成员(尽管private成员被隐藏起来,且不能访问),但更重要的是,它复制了基础类的接口。及子类继承父类的所有私有属性及私有方法。
有两种做法可将新得的子类与父类区分开。第一种做法十分简单:为衍生类添加新函数(功能)。这些新函数并非基础类接口的一部分。进行这种处理时,一般都是意识到基础类不能满足我们的要求,所以需要添加更多的函数。这是一种最简单、最基本的继承用法,大多数时候都可完美地解决我们的问题。然而,事先还是要仔细调查自己的基础类是否真的需要这些额外的函数。
尽管子类继承父类所有的属性和方法。当子类需要特定的函数 父类不包含此类函数还是需要子类单独创建一个函数来完成功能(个人的理解)
继承过程中 :等价与类似关系
针对继承可能会产生这样的一个争论:继承只能改善原基础类的函数吗?若答案是肯定的,则衍生类型就是与基础类完全相同的类型,因为都拥有完全相同的接口。这样造成的结果就是:我们完全能够将衍生类的一个对象换成基础类的一个对象!可将其想象成一种“纯替换”。在某种意义上,这是进行继承的一种理想方式。此时,我们通常认为基础类和衍生类之间存在一种“等价”关系——因为我们可以理直气壮地说:“圆就是一种几何形状”。为了对继承进行测试,一个办法就是看看自己是否能把它们套入这种“等价”关系中,看看是否有意义。但在许多时候,我们必须为衍生类型加入新的接口元素。所以不仅扩展了接口,也创建了一种新类型。这种新类型仍可替换成基础类型,但这种替换并不是完美的,因为不可在基础类里访问新函数。我们将其称作“类似”关系;新类型拥有旧类型的接口,但也包含了其他函数,所以不能说它们是完全等价的。
认识了等价与类似的区别后,再进行替换时就会有把握得多。尽管大多数时候“纯替换”已经足够,但您会发现在某些情况下,仍然有明显的理由需要在衍生类的基础上增添新功能(及子类重写父类的方法或者子类创建一个特殊类来完成自己的操作)。通过前面对这两种情况的讨论,相信大家已心中有数该如何做。
- Thinking In Java学习进程---对象的入门1.5 继承:重新使用接口
- Thinking In Java学习进程---对象的入门1.2 对象的接口
- Thinking In Java学习进程---对象的入门1.1抽象的进步
- Thinking In Java学习进程---对象的入门1.3 实现方案的隐藏
- 《Thinking in Java》学习笔记——第一章:对象入门
- thinking in Java之对象入门
- thinking in java 学习笔记(一) 接口于多重继承
- 《Thinking in Java》对继承的介绍
- 《Thinking in Java》狗血的学习笔记-1对象
- Thinking in Java 接口
- Thinking in Java__对象入门
- [Thinking in JAVA] JAVA多线程的学习
- 第1章 对象入门——Thinking-in-Java
- Thinking in Java 第1章 对象入门 总结
- thinking in java 阅读笔记 第一章 对象入门
- 学习 thinking in java
- Thinking in java之接口
- Thinking in Java之List接口、ArrayList类源码学习
- Kafka中Topic级别配置
- 3.4.1.1_光标的擦除
- 关于js中两种定时器的设置及清除 [转发]
- Cocos2d-js模块化开发的一种解决方案
- 完全卸载mysql
- Thinking In Java学习进程---对象的入门1.5 继承:重新使用接口
- weblogic自定义的log4j2
- JAVA NIO解析
- 剑指Offer——(17)树的子结构
- Python eventlet
- JSP笔记与实验室管理系统更改的心得
- 417. Pacific Atlantic Water Flow
- Hibernate关联关系配置(一对多、一对一和多对多)
- 3.4.1.2_光标的闪烁效果_清定时器版本