rudy 繼承 概念
来源:互联网 发布:手机陀螺仪水平仪软件 编辑:程序博客网 时间:2024/06/16 11:47
在日常生活中,我們對一切對象的分類都是有一定層次的.我們知道所有的貓都是哺乳動物,而所有的哺乳動物又都是動物.小型的類從更大的
類中繼承它們的屬性.如果一切的哺乳動物要呼吸,那麼貓也要呼吸.
在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).這是面向對象編程的又一好處.
0 0
- rudy 繼承 概念
- rudy 方法 分析
- 分析 rudy 類
- 20170609Rudy&黄金时代
- rudy 重載方法 詳解
- 剖析 rudy 訪問控制
- windows下rudy更换sources之淘宝镜像
- rudy环境下sass编译报错的问题
- 概念
- 概念
- 概念
- 概念
- 概念
- 概念
- 概念
- 概念
- 概念
- 概念
- Hibernate学习记录1
- 艱難完成 nginx + puma 部署 rails 4的詳細記錄
- 欢迎使用CSDN-markdown编辑器
- ruby線程實現生產者消費者問題示例(隊列Queue實現線程同步)
- POJ 1177 Picture [离散化+扫描线+线段树]
- rudy 繼承 概念
- mysql学习笔记之十四(安全性机制)
- the environment variable java_home (with the value of ) does not point to a valid jvm installation
- Rails命令行常用操作命令簡明總結
- #301 (div.2) A. Combination Lock
- ruby 過程對象 解析
- NIN-Network In Network阅读笔记
- Ruby簡明教程之數組和Hash介紹
- win7中用virtualbox不能安装虚拟机的问题