多态实例

多态

 

多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

 

Pyhon 很多语法都是支持多态的,比如 len(),sorted(), 你给len传字符串就返回字符串的长度,传列表就返回列表长度。

说白了,多态就是父类去调子类的方法,python无法直接实现,但是可以通过间接实现。

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!‘
d = Dog("d1")
c = Cat("C1")
# Animal.talk(d)
# Animal.talk(c)
def animal_talk(obj):
    print(obj.talk())
animal_talk(d)
animal_talk(c)
时间: 2024-10-27 01:48:20

多态实例的相关文章

多态-实例

/** * Created by rabbit on 2014-07-10. */ abstract class student {     public abstract void study();     public abstract void sleep(); } class Basestudent extends student {     public void study()     {         System.out.println("Base study");

c++虚函数与多态实例分析

1 #include <iostream> 2 #include <complex> 3 using namespace std; 4 5 class Base 6 { 7 public: 8 Base() {cout<<"Base-ctor"<<endl;} 9 ~Base() {cout<<"Base-dtor"<<endl;} 10 virtual void f(int){cout<

Java多态 实例子类自动调用父类为空的构造方法 成员变量不支持Override 可写,没多态效果

=======子类 实例化的时候 默认调用父类为空的构造方法 即super();可省略. 但是当父类没有为空的构造方法的时候就必须在子类中       调用这个方法先实例父类 才能实例子类. 父类为空的构造方法 默认存在 在子类中默认自动调用. ========父类引用指向子类对象的时候  根据引用变量中 实例所属的类调用不同的类的方法,这种多态只适用于方法不适用与成员变量. 简单的理解为Java不支持属性字段覆盖(override),只支持方法覆盖,属性字段 不可重写. ========实例化

python------面向对象介绍之多态实例

一. 多态 一种接口,多种实现. 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作. 简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针. 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化:继承可以扩展已存在的代码模块(类):它们的目的都是为了--代码重用. 而多态则是为了实现另一个目的--接口重用!多态的作用,就是为了类在继承和派生的时候,保证使

2015 IOS 学习笔记 面向对象之多态 实例僵尸的练习 ——蓝懿教育

多态 多态性(polymorphism)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作.简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针.不同对象以自己的方式响应相同的消息的能力叫做多态.意思就是假设生物类(life)都用有一个相同的方法-eat;那人类属于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法.也就是不同的对象以自己的方式响应了相同的消息(响

C++笔记(4):继承和多态实例总结

继承与多态 1.继承与派生的基础 2.派生类的使用 3.多态 4.抽象类 ------------------------------------------------------------------------------------------------------------------------------ 1.继承与派生的基础 面向对象编程的主要目的之一就是提供可重用的代码.强调可重用性.使用C语言进行编程时,可以使用C标准的各种函数.C++提供更高层次的重用,如类库.通过继

多态原理和多态实例

多态实现的关键------虚函数表 每一个有虚函数的类(或有虚函数的类的派生类)都有一个虚函数表,该类的任何对象中都放着虚函数表的指针.虚函数表中列出了该类的虚函数地址.多出来的4个字节就是用来存放虚函数表的地址的. 多态的函数调用语句被编译成一系列根据基类指针所指向的(或基类引用所引用的)对象中存放的虚函数表的地址,在虚函数表中查找虚函数地址,并调用虚函数的指令. 多态在使用中会带来空间上额外的空间开销和时间开销.每个有虚函数类的对象中会多出4个字节来存放虚函数表的地址. 多态处理图形类的代码

python 多态实例

# coding:utf-8"""多态(英语:Polymorphism),是指面向对象程序运行时,相同的消息可能会送给多个不同的类之对象,而系统可依据对象所属类,引发对应类的方法,而有不同的行为.简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作称之.在面向对象程序设计中,多态一般指子类型多态(Subtype polymorphism). 上面的定义有点让初学者费解,黄哥用"打开"这个动作来描述面向对象的多态."打开",可以

Lua实现简单的类,继承,多态 实例

1 -- 类的例子,长方形的类,具备一个打印面积方法和一个设置长宽的方法 2 --lua实现类的思路,定义出来的对象在lua中可以访问自己有的成员,访问成员函数实际上是通过元表的__index方法实现的,具体点就是访问自己的成员函数,发现没有函数,然后判断是否有元表和__index元方法(当然都有,而且是必须有),然后就变成了访问元表也就是类的成员,自然就访问了成员函数 3 Cfx = { m_chang = 0, m_kuan = 0, m_area = 0 } 4 Cfx.__index =