Python封装,继承与多态

桥蕤
• 阅读 475

封装、继承和多态是面向对象的三大特点;直接看Python中是怎么实现的

封装 继承 多态

封装

首先定义一个 Human 类,初始化类的属性和方法:

class Human:
    def __init__(self):
        # 这是可以公共知道的属性
        self.age = None  # 年龄
        self.height = None  # 身高

        # 这是私有属性,如持有多少钱
        self.__money = None

    # 为了让自己使用自己的钱,要设置方法来获取
    def getMoney(self):
        return self.__money
    # 设置money值
    def setMoney(self, money):
        if money > 0:
            self.__money = money
    def speak(self):
        pass

这样我们就可以说这个类完成了封装。可以看出封装就是把众多属性和方法合在一起,形成一个功能。这是一种编程思想。

继承

前面我们定义了 Human 类,现在我们还想定义一个类,它可以使用 Human 类的功能,同时也有自己的功能,可以使用继承:

class LocalHuman(Human):

    # 这是这个类独有的功能
    def speak(self):
        print('我会说本地话。')

运行测试代码:

if __name__ == '__main__':
    # 创建LocalHuman实例
    local_human = LocalHuman()
    # 测试
    # 这是继承自Human类的
    print(local_human.height)
    print(local_human.age)
    print(local_human.getMoney())
    # 这是自己的
    local_human.speak()

结果如下: Python封装,继承与多态 这样的过程就是继承,当需要使用的功能有部分重复时,我们优先使用继承的方法,避免再一次造出重复的功能。

多态

定义一个 Rich 类,它继承 Human 类:

class Rich(Human):
    def __init__(self):
        self.age = 1
        self.height = 10
        # 部分属性和父类不同
        self.setMoney(100000000)

    def speak(self):
        print('我喜欢极限运动!')

定义一个函数接收 Human 对象,来展示 Human 对象的不同形态:

def show(h: Human):
    print(h.getMoney())
    h.speak()

测试代码:

if __name__ == '__main__':
    # 创建LocalHuman实例
    local_human = LocalHuman()
    # 创建Rich实例
    rich = Rich()
    # 测试
    # 调用show 函数,显示他们的不同
    show(local_human)
    print('-' * 31)  # 分隔符
    show(rich)

运行结果: Python封装,继承与多态

可以看出,同一个函数传入父类是Human类,可以表示出多种形态,这就是Human类的多态。

点赞
收藏
评论区
推荐文章
cpp加油站 cpp加油站
3年前
c++类和继承面试点25连问
本篇文章连问面试时经常会遇到的类和继承相关25个问题,看看你能回答出几道题呀。还是先看一下思维导图,如下:1.c的三大特性是什么c的三大特性,说白了其实就是面向对象的三大特性,是指:封装、继承、多态,简单说明如下:封装是一种技术,它使类的定义和实现分离,也就是隐藏了实现细节,只留下接口给他人调用,另外封装还有一层意义是它把某种事物具现出属性和方
Wesley13 Wesley13
3年前
java中面向对象的一点学习总结
最近开始看java的一些东西,感觉比python麻烦些,今天学习了面向对象的一些东西,觉得挺多挺复杂,这里做个知识总结以一个简单的例子来说明java面向对象的三大特性,封装,继承,多态,有一个动物(Animal)基类,定义了run与eat方法,然后有一个猫(Cat)与狗(Dog)的子类继承了动物这个父类,子类重写(override)了父类的run与eat
Wesley13 Wesley13
3年前
java面试(1)
1.面向对象的基本特征  封装、继承、多态、  封装:把客观事物封装成类  继承:继承一个类,就可以使用这个类的所有功能,并且在无需编写原来类的情况下对这些功能进行扩展  多态:子对象调用父对象,父对象会根据当前调用的子对象以不同的方式运作  实现多态:覆盖,重载2.final\\finally\\finalize的区别  fin
Wesley13 Wesley13
3年前
java面向对象的三大特性
java面向对象的三大特性1.封装,把事物封装成抽象的类,通过访问控制符把自己的成员变量和函数对不可信的进行信息隐藏以及提供方法给可信的类和对象来操作。2.继承,继承可以使用现有类的所有功能和成员变量,并且无需重新编写原来的类的情况下对这些功能进行扩展。3.多态,实现了对代码的复用,多态具体体现为重载和重
Wesley13 Wesley13
3年前
java的封装和this关键字知识整理
封装封装概述封装,是面向对象思想的特征之一。面向对象共有三个特征:封装,继承,多态。|封装表现:1.方法是最基本的封装体2.类也是一个封装体.封装的好处:1、提高了代码的复用性。 2、隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。 3、提高了安全性。
Wesley13 Wesley13
3年前
Java(3)
面向对象编程思想:抽象 继承 多态 封装对象:万事万物皆对象. 类:把具有相同属性和方法的对象抽象出来形成的几何体!类是对象的抽象,对象是类的具体!如何描述一个类1.属性(属性不初始化时也有初始值,会自动初始化,整形为0 小数型为0.0  boolea
Wesley13 Wesley13
3年前
Java:类与继承
  对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础。抽象、封装、继承、多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知识。首先,我们讲述一下与类的初始化相关的东西,然后再从几个方面阐述继承这一大特性。以下是本文的目录大纲:  一.你了解类吗?  二.你了解继承吗?  三.常见的面试
Wesley13 Wesley13
3年前
Java面试题(一)
看到一篇不错的java面试题的文章,自己整理一下,作为备用吧!Java面试题面向对象的特征有哪些方面?封装最常见的是把属性私有化封装在一个类里面,只能通过方法去访问继承子类继承父类,从而继承了父类的方法和属性抽象
Wesley13 Wesley13
3年前
JAVA面向对象
一、java面向对象的特征?答:java面向对象的特征:封装、继承、多态、抽象。如果问java面向对象的三大特征是什么?那就是封装、继承、多态,但说到面向对象,还有一个很主要的特征就是抽象。1、封装a)铺垫:Java把真实世界中某些具有共同特征的实体抽象成Java中的类,类的实例就是一个对象,而对象和真实世界的实体是一一