澳门威利斯人_威利斯人娱乐「手机版」

来自 澳门威利斯人 2019-07-21 05:18 的文章
当前位置: 澳门威利斯人 > 澳门威利斯人 > 正文

分析 rudy 类

ruby> Dog.speak
ERR: (eval):1: undefined method `speak' for Dog:class  

ruby> tama = Cat.new
   #<Cat:0xbd80e8>
ruby> tama.breathe
inhale and exhale
   nil
ruby> tama.speak
Meow
   nil  

在OO编程的术语里,像"狗"那样的一类对象称之为二个类,一些独特的属于那一个类的对象叫作类的实业(instance of that class).

在Ruby里,大家能够这么表述这一定义:

还要,假若我们只是想听听狗叫声而不带其余心绪,大家得以成立(实体化)四头短命的,有的时候存在的狗,并在未有前小吠几声.

也会遇见那样的境况:父类的某些质量不得以被某一特定的子类承袭.纵然一般鸟类都会飞,但企鹅是小鸟中不会飞的三个子类.

ruby> pochi = Dog.new
   #<Dog:0xbcb90>  

尽管如此大家从没指爱他美(Aptamil)只猫要如何呼吸,但因为Cat是概念为Mammal的子类的(在OO术语里,十分小的类叫子类,相一点都十分大的类称父类),每一头猫都将继续来自于Mammal类的行为.因而从技师的角度出发,猫天生就持有呼吸这一才干;当我们增多speak方法后,我们的猫就能够呼吸,也能够发声了.

既是我们已有了Dog类,大家就足以用它来创建二头狗:

在常常生活中,我们对全体对象的分类都以有一定档期的顺序的.大家理解全数的猫都以哺乳动物,而具备的哺乳动物又都以动物.小型的类从越来越大的
类中承袭它们的属性.假诺整个的哺乳动物要呼吸,那么猫也要呼吸.

创立三个新的类实体不时也被称作类的实体化(instantiating).大家供给逗贰头实实在在的狗;并不是梦想让Dog类向大家汪汪叫.

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  

相似的,在Ruby或任何OO语言里创立二个指标首先得定义类的性质,接着再次创下设叁个实体.为了表达那一点,让我们先来定义二个大致的Dog类.

ruby> class Mammal
    |   def breathe
    |     print "inhale and exhalen"
    |   end
    | end
   nil
ruby> class Cat<Mammal
    |   def speak
    |     print "Meown"
    |   end
    | end
   nil  

ruby> (Dog.new).speak   # or more commonly, Dog.new.speak
Bow Wow
   nil  

...

本文由澳门威利斯人发布于澳门威利斯人,转载请注明出处:分析 rudy 类

关键词: 澳门威利斯人