多态性的实际例子

多态性的实际例子,第1张

多态性的实际例子

查看Wikipedia示例:从高层次上讲,它非常有用:

class Animal:    def __init__(self, name):    # Constructor of the class        self.name = name    def talk(self):   # Abstract method, defined by convention only        raise NotImplementedError("Subclass must implement abstract method")class Cat(Animal):    def talk(self):        return 'Meow!'class Dog(Animal):    def talk(self):        return 'Woof! Woof!'animals = [Cat('Missy'),Cat('Mr. Mistoffelees'),Dog('Lassie')]for animal in animals:    print animal.name + ': ' + animal.talk()# prints the following:## Missy: Meow!# Mr. Mistoffelees: Meow!# Lassie: Woof! Woof!

请注意以下几点:所有动物都在“说话”,但是它们说话的方式有所不同。因此,“谈话”行为在某种意义上是多态的,这 取决于动物的实现方式
。因此,抽象的“动物”概念实际上并不是“交谈”,而是特定的动物(如狗和猫)对“交谈”动作有具体的实现。

同样,在许多数学实体中都定义了“加”运算,但是在特定情况下,您可以根据特定规则“加”:1 + 1 = 2,但是(1 + 2i)+(2-9i)=(3-7i
)。

多态行为使您可以在“抽象”级别指定常用方法,并在特定实例中实现它们。

例如:

class Person(object):    def pay_bill(self):        raise NotImplementedErrorclass Millionare(Person):    def pay_bill(self):        print "Here you go! Keep the change!"class GradStudent(Person):    def pay_bill(self):        print "Can I owe you ten bucks or do the dishes?"

你看,百万富翁和研究生都是人。但是,在支付账单时,他们特定的“支付账单” *** 作是不同的。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5653001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存