当前位置: 首页 > 面试题库 >

多态性的实际例子

国阳
2023-03-14
问题内容

任何人都可以给我一个现实的多态性实例吗?我的教授跟我讲了我一直听到的关于+操作员的古老故事。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?"

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



 类似资料:
  • 问题内容: 我熟悉静态工厂方法的概念和好处,如Joshua Bloch的EffectiveJava中所述: 工厂方法具有名称,因此与构造函数不同,您可以拥有多个具有相同签名的工厂方法。 工厂方法不必创建新的对象。他们可以返回先前创建的对象。这对于不可变对象或值对象很有用。 与构造方法不同,工厂方法可以返回其返回类型的任何子类型的对象。 现在,我正在尝试为正在学习Java和OO原理的人员解释静态工厂

  • 本文向大家介绍java 多态性详解及简单实例,包括了java 多态性详解及简单实例的使用技巧和注意事项,需要的朋友参考一下 Java中多态性的实现 什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。

  • 本文向大家介绍PHP多态代码实例,包括了PHP多态代码实例的使用技巧和注意事项,需要的朋友参考一下 多态定义:只关心一个接口或者基类,而不关心一个对象的具体类。(同一类型,不同结果) 这里两个例子: 第一个,我们发现,基类定义了标准,子类进行了自我规则的实现。这是多态的一个要求。同时,这是满足重写;实际上这是不同类的不同表现;没有严格满足一个接口,或者基类编程。因为你调用的时候不是 stu->sh

  • 本文向大家介绍java 多态实例代码,包括了java 多态实例代码的使用技巧和注意事项,需要的朋友参考一下 多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。 多态性是对象多种表现形式的体现,比如: 在现实中,我们按下F1键这个动作: 如果当前在Flash界面下弹出的就是AS 3的帮助文档 如果当前在Word下弹出的就是Word帮助 在Window

  • 本文向大家介绍Java多态性定义与用法实例详解,包括了Java多态性定义与用法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java多态性定义与用法。分享给大家供大家参考,具体如下: 多态性是通过: 1 接口和实现接口并覆盖接口中同一方法的几不同的类体现的 2 父类和继承父类并覆盖父类中同一方法的几个不同子类实现的. 一、基本概念 多态性:发送消息给某个对象,让该对象自行决定响应

  • 我正在使用rails的bootstrap-timepicker,并且在表单帮助器中使用它。如果只有一个实例,它就会工作得很好。下面是一段代码片段: 但是,当一个页面中有多个实例时,它就不起作用了。基本上,我有多个动态数据行,每行都需要一个时间选择器,我找到的示例很简单,有一个唯一的输入id和相应的JavaScript。 有没有人知道我如何使它变得动态,或者知道有什么例子可以证明这一点?