rudy 继承 概念
程序员文章站
2022-03-20 15:33:39
在日常生活中,我们对一切对象的分类都是有一定层次的.我们知道所有的猫都是哺乳动物,而所有的哺乳动物又都是动物.小型的类从更大的 类中继承它们的属性.如果一切的哺乳动物要呼吸...
在日常生活中,我们对一切对象的分类都是有一定层次的.我们知道所有的猫都是哺乳动物,而所有的哺乳动物又都是动物.小型的类从更大的
类中继承它们的属性.如果一切的哺乳动物要呼吸,那么猫也要呼吸.
在ruby里,我们可以这样表述这一概念:
ruby> class mammal
| def breathe
| print "inhale and exhale\n"
| end
| end
nil
ruby> class cat<mammal
| def speak
| print "meow\n"
| end
| end
nil
虽然我们并未指明一只猫要怎样呼吸,但因为cat是定义为mammal的子类的(在oo术语里,较小的类叫子类,相比较大的类称父类),每一只猫都将继承来自于mammal类的行为.因此从程序员的角度出发,猫天生就拥有呼吸这一能力;当我们加上speak方法后,我们的猫就能呼吸,也可以发声了.
ruby> tama = cat.new
#<cat:0xbd80e8>
ruby> tama.breathe
inhale and exhale
nil
ruby> tama.speak
meow
nil
也会遇到这样的情况:父类的某些属性不可以被某一特定的子类继承.虽然一般鸟类都会飞,但企鹅是鸟类中不会飞的一个子类.
ruby> class bird
| def preen
| print "i am cleaning my feathers."
| end
| def fly
| print "i am flying."
| end
| end
nil
ruby> class penguin<bird
| def fly
| fail "sorry. i'd rather swim."
| end
| end
nil
抛开脑尽力疲地为每一个新类定义属性,我们只需要新增或重定义子类和父类之间的区别.继承的这一用法有时也叫做特点编程(differential programming).这是面向对象编程的又一好处.
类中继承它们的属性.如果一切的哺乳动物要呼吸,那么猫也要呼吸.
在ruby里,我们可以这样表述这一概念:
ruby> class mammal
| def breathe
| print "inhale and exhale\n"
| end
| end
nil
ruby> class cat<mammal
| def speak
| print "meow\n"
| end
| end
nil
虽然我们并未指明一只猫要怎样呼吸,但因为cat是定义为mammal的子类的(在oo术语里,较小的类叫子类,相比较大的类称父类),每一只猫都将继承来自于mammal类的行为.因此从程序员的角度出发,猫天生就拥有呼吸这一能力;当我们加上speak方法后,我们的猫就能呼吸,也可以发声了.
ruby> tama = cat.new
#<cat:0xbd80e8>
ruby> tama.breathe
inhale and exhale
nil
ruby> tama.speak
meow
nil
也会遇到这样的情况:父类的某些属性不可以被某一特定的子类继承.虽然一般鸟类都会飞,但企鹅是鸟类中不会飞的一个子类.
ruby> class bird
| def preen
| print "i am cleaning my feathers."
| end
| def fly
| print "i am flying."
| end
| end
nil
ruby> class penguin<bird
| def fly
| fail "sorry. i'd rather swim."
| end
| end
nil
抛开脑尽力疲地为每一个新类定义属性,我们只需要新增或重定义子类和父类之间的区别.继承的这一用法有时也叫做特点编程(differential programming).这是面向对象编程的又一好处.
推荐阅读
-
对python中类的继承与方法重写介绍
-
Python实现类继承实例
-
留不住用户?这5个概念帮你指明2018网站营销的前进方向
-
python基础知识(安装、数据类型、list列表、字典、函数、类、继承、文件操作)
-
HashMap原理(一) 概念和底层架构
-
《从零开始学Swift》学习笔记(Day 41)——类的继承
-
《从零开始学Swift》学习笔记(Day43)——构造函数继承
-
MySQL查询语句过程和EXPLAIN语句基本概念及其优化
-
java的面向对象特征(java中对象的概念)
-
PHP学习记录之面向对象(Object-oriented programming,OOP)基础【类、对象、继承等】