多态性的实际例子

最大值:

任何人都可以给我一个现实的多态性实例吗?我的教授跟我讲了我一直听到的关于+操作员的古老故事a+b = c2+2 = 4,所以这是多态性。我确实不能将这样的定义与自己联系起来,因为我已经阅读并重新阅读了许多书籍。

我需要的是一个真实的示例代码,我可以将其与之真正关联。

例如,这是一个小示例,以防万一您想扩展它。

>>> class Person(object):
    def __init__(self, name):
        self.name = name

>>> class Student(Person):
    def __init__(self, name, age):
        super(Student, self).__init__(name)
        self.age = age
埃斯库洛:

查看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 NotImplementedError

class 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?"

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章