欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python基础核心经典教程(029)——面向对象特征之多态

程序员文章站 2022-03-27 10:41:04
之前,我们已经讲解了面向对象的两大特征:封装和继承。那么,什么又是多态呢?多态,简而言之就是多种形态。多态的两大前提:- 1、继承- 2、子类重写父类方法在这两大前提之下:不同的子类对象调用相同的父类方法,将产生不同的执行结果;这就是多态。...

版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

多态概述

之前,我们已经讲解了面向对象的两大特征:封装和继承。那么,什么又是多态呢?多态,简而言之就是多种形态。

多态的两大前提:

  • 1、继承
  • 2、子类重写父类方法

在这两大前提之下:不同的子类对象调用相同的父类方法,将产生不同的执行结果;这就是多态。

多态示例

"""
原创作者:谷哥的小弟
博客地址:http://blog.csdn.net/lfdfhl
示例描述:面向对象三大特征——多态
"""


# 定义学生类
class Student:
    def __init__(self, name):
        self.name = name

    def answer(self):
        print("%s回答问题" % self.name)


# 定义继承自Student的学霸类
class GoodStudent(Student):
    # 重写父类的方法
    def answer(self):
        print("%s非常流利地回答问题" % self.name)
    pass


# 定义继承自Student的学渣类
class BadStudent(Student):
    # 重写父类的方法
    def answer(self):
        print("%s磕磕巴巴地回答问题" % self.name)
    pass


# 定义老师类
class Teacher:
    def ask(self, student):
        print("老师请学生%s回答问题" % student.name)
        # 学生回答问题
        student.answer()


# 创建Teacher对象
teacher = Teacher()
# 创建GoodStudent对象
goodStudent = GoodStudent("lucy")
# 创建BadStudent对象
badStudent = BadStudent("jack")
# 老师提问
teacher.ask(goodStudent)
# 老师提问
teacher.ask(badStudent)

Python基础核心经典教程(029)——面向对象特征之多态在该示例中:

  • 1、GoodStudent和BadStudent继承自同一个父类Student
  • 2、GoodStudent和BadStudent均重写了父类Student的answer( )方法
  • 3、Teacher类的ask( )方法要求传入一个Student;所以,传GoodStudent或BadStudent的对象均可

本文地址:https://blog.csdn.net/lfdfhl/article/details/106130769