服务器之家

服务器之家 > 正文

ruby 继承 概念

时间:2020-04-08 20:58     来源/作者:ruby教程网

在日常生活中,我们对一切对象的分类都是有一定层次的.我们知道所有的猫都是哺乳动物,而所有的哺乳动物又都是动物.小型的类从更大的

类中继承它们的属性.如果一切的哺乳动物要呼吸,那么猫也要呼吸.

在Ruby里,我们可以这样表述这一概念:

ruby>classMammal

|defbreathe

|print"inhaleandexhale\n"

|end

|end

nil

ruby>classCat

|defspeak

|print"Meow\n"

|end

|end

nil

虽然我们并未指明一只猫要怎样呼吸,但因为Cat是定义为Mammal的子类的(在OO术语里,较小的类叫子类,相比较大的类称父类),每一只猫都将继承来自于Mammal类的行为.因此从程序员的角度出发,猫天生就拥有呼吸这一能力;当我们加上speak方法后,我们的猫就能呼吸,也可以发声了.

ruby>tama=Cat.new

#

ruby>tama.breathe

inhaleandexhale

nil

ruby>tama.speak

Meow

nil

也会遇到这样的情况:父类的某些属性不可以被某一特定的子类继承.虽然一般鸟类都会飞,但企鹅是鸟类中不会飞的一个子类.

ruby>classBird

|defpreen

|print"Iamcleaningmyfeathers."

|end

|deffly

|print"Iamflying."

|end

|end

nil

ruby>classPenguin

|deffly

|fail"Sorry.I'dratherswim."

|end

|end

nil

抛开脑尽力疲地为每一个新类定义属性,我们只需要新增或重定义子类和父类之间的区别.继承的这一用法有时也叫做特点编程(differentialprogramming).这是面向对象编程的又一好处.

标签:

相关文章

热门资讯

沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部