Ruby繼承應(yīng)用經(jīng)驗分享
Ruby語言作為一種編程語言,同樣具有繼承的功能。下面我們將會針對Ruby繼承的一些相關(guān)知識對大家做一個詳細(xì)的介紹。希望有所幫助。#t#
在日常生活中,我們對一切對象的分類都是有一定層次的.我們知道所有的貓都是哺乳動物,而所有的哺乳動物又都是動物.小型的類從更大的
類中繼承它們的屬性.如果一切的哺乳動物要呼吸,那么貓也要呼吸.
在Ruby里,我們可以這樣表述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術(shù)語里,較小的類叫子類,相比較大的類稱父類),每一只貓都將繼承來自于Mammal類的行為.因此從程序員的角度出發(fā),貓?zhí)焐蛽碛泻粑@一能力;當(dāng)我們加上speak方法后,我們的貓就能呼吸,也可以發(fā)聲了.
- ruby> tama = Cat.new
- #<Cat:0xbd80e8>
- ruby> tama.breathe
- inhale and exhale
- nil
- ruby> tama.speak
- Meow
- nil
Ruby繼承也會遇到這樣的情況:父類的某些屬性不可以被某一特定的子類繼承.雖然一般鳥類都會飛,但企鵝是鳥類中不會飛的一個子類.
- 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
拋開腦盡力疲地為每一個新類定義屬性,我們只需要新增或重定義子類和父類之間的區(qū)別.Ruby繼承的這一用法有時也叫做特點編程(differential programming).這是面向?qū)ο缶幊痰挠忠缓锰?