连载:面向对象葵花宝典:思想、技巧与实践(12) - “继承” 详解

简介:

继承 = 遗传

继承是面向对象最基本的特征,如果一个语言没有继承机制,就谈不上真正的面向对象的语言。

 

继承本身很好理解,和我们日常生活中的“继承”概念基本一样:子承父业!所以,你可以看到面向对象的编程语言里面,有了“父类”、“子类”的概念。

 

但是我个人认为“继承”这个说法并不确切,一般我们理解“继承”,都是理解为继承产业、继承财产,例如李泽钜继承李嘉诚的事业。但在面向对象的领域里面,并不是“子类”继承了“父类”的产业,而是继承了“父类”的特点,具体来说就是继承了“属性和方法”。

 

所以我认为“继承”更加贴切的说法是类似生物学上的“遗传”,按照中国话的说法就是“龙生龙,凤生凤,老鼠生来会打洞”,面向对象的继承意味“子类”遗传了了某些“父类”的属性和方法。

 

但就像生物学上的进化论一样,有遗传就有变异,正因为有了变异,才会有新的物种产生;有了变异,面向对象才有子类的出现。

 

当然,面向对象的进化不是“自然选择”的结果,而是你——伟大的程序猿——选择的结果。

除了可以选择子类如何变异外,你——伟大的程序猿——还可以控制另外一个遗传因素:你可以决定父类遗传什么给子类!

 

也就是说,你可以控制父类将哪些“基因”遗传下去,你也可以控制子类如何变异出哪些新基因。

所以,你——伟大的程序猿——就是面向对象世界的“上帝”!

 

 继承 vs 抽象?

我们来看看一个继承的实例:

 

 

 

如果你还记得前面看过的“抽象”一章的内容,你一定会感到很惊讶:

抽象和继承的图完全相反,那这两个东东到底有什么区别和联系呢?

 

抽象:是分析和设计过程中的一个动作,一个技巧,通过抽象得出类

继承:是实现过程中的一个动作,基于抽象结果,通过编程语言的特性,完成抽象图的模拟。

 

因此,抽象和继承是前后衔接的关系,先有抽象,通过抽象得出类,后通过继承来表达抽象结果


================================================ 
转载请注明出处:http://blog.csdn.net/yunhua_lee/article/details/19818711
================================================ 

相关文章
|
4月前
|
存储 编译器 数据安全/隐私保护
【软件设计师备考 专题 】面向对象开发方法:理解类、对象和封装
【软件设计师备考 专题 】面向对象开发方法:理解类、对象和封装
69 0
|
设计模式 前端开发 安全
【Java设计模式 面向对象设计思想】二 再谈面向对象和面向过程
【Java设计模式 面向对象设计思想】二 再谈面向对象和面向过程
93 0
|
Java DataX
教你从实战中领悟继承(中) | 带你学《Java面向对象编程》之四十三
本节通过介绍字符串统计算法在两种思路下的不同实现方式,为读者展示了简单实现与结构化设计下的程序的不同。
教你从实战中领悟继承(上) | 带你学《Java面向对象编程》之四十二
本节将结合学校情景与职场情景进行简单类编写实战,通过符合常识的逻辑抽象体现继承的理念。
|
Java 索引
教你从实战中领悟继承(下) | 带你学《Java面向对象编程》之四十四
本节基于数组类型数据,带着读者进行数组相关操作类的编写,帮助读者彻底掌握继承。
|
程序员 开发工具 Android开发
哲学到编程:思想的实例化
万古长江水,千年儒释道。历史的长流中,芸芸众生,参差不齐,但总是能够总结出一个“生旦净末丑”来。儒、释、道,五千年的中华文化,却总是围绕着这三种主流思想交相演绎。
913 0