面向对象三大特性之多态与多态性

Posted lichunke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象三大特性之多态与多态性相关的知识,希望对你有一定的参考价值。

一、多态

‘‘‘
多态:
    同一事物的多种形态
‘‘‘


# 文件的多种形态:

class File:
    def click(self):
        pass


class TextFile(File):
    def read(self):
        print(文本文件双击可以查看内容)


class ExeFile(File):
    def exe(self):
        print(可执行文件双击可以执行)


file1 = TextFile()
file2 = ExeFile()

file1.read()
file2.exe()

# 上面的代码,其实子类压根没用到父类的功能,多态应用如下

import abc


class File(metaclass=abc.ABCMeta):  # 同一类事物:文件
    @abc.abstractclassmethod
    def click(self):
        pass


class TextFile(File):
    def read(self):
        print(文本文件双击可以查看内容)


class ExeFile(File):
    def exe(self):
        print(可执行文件双击可以执行)


file1 = TextFile()
file2 = ExeFile()

‘‘‘
使用abc模块,指定metaclass=ab.ABCMeta,如果子类没有用到父类的功能则会报错
    TypeError: Can‘t instantiate abstract class TextFile with abstract methods click
‘‘‘

# 修改如下:
import abc


class File(metaclass=abc.ABCMeta):  # 同一类事物:文件
    @abc.abstractclassmethod
    def click(self):
        pass


class TextFile(File):
    def click(self):
        print(文本文件双击可以查看内容)


class ExeFile(File):
    def click(self):
        print(可执行文件双击可以执行)


file1 = TextFile()
file2 = ExeFile()
file1.click()
file2.click()

二、多态性

 

以上是关于面向对象三大特性之多态与多态性的主要内容,如果未能解决你的问题,请参考以下文章

面向对象语言三大特性之 “多态”

19.Python面向对象之:三大特性:继承,封装,多态。

面向对象之:三大特性:继承(已讲),封装,多态

C++ 面向对象程序三大特性之 多态

15:面向对象三大特性(封装继承多态)之多态

java第五章:面向对象(oop)三大特性之多态