面向对象的三大特性

面向对象的三大特性

封装、继承、多态 是面向对象的3大特性

一、封装

在这里插入图片描述

在这里插入图片描述

好处
  1. 在使用面向过程编程时,当需要对数据处理时,需要考虑用哪个模板中哪个函数来进行操作,但是当用面向对象编程时,因为已经将数据存储到了这个独立的空间中,这个独立的空间(即对象)中通过一个特殊的变量(class)能够获取到类(模板),而且这个类中的方法是有一定数量的,与此类无关的将不会出现在本类中,因此需要对数据处理时,可以很快速的定位到需要的方法是谁 这样更方便
  2. 全局变量是只能有1份的,多很多个函数需要多个备份时,往往需要利用其它的变量来进行储存;而通过封装 会将用来存储数据的这个变量 变为了对象中的一个“全局”变量,只要对象不一样那么这个变量就可以再有1份,所以这样更方便
  3. 代码划分更清晰

面向过程

全局变量1
全局变量2
全局变量3
...

def 函数1():
    pass


def 函数2():
    pass


def 函数3():
    pass


def 函数4():
    pass


def 函数5():
    pass

面向对象

class(object):
    属性1
    属性2

    def 方法1(self):
        pass

    def 方法2(self):
        pass

class2(object):
    属性3
    def 方法3(self):
        pass

    def 方法4(self):
        pass

    def 方法5(self):
        pass

二、继承

在这里插入图片描述

说明
  1. 能够提升代码的重用率,即开发一个类,可以在多个子功能中直接使用
  2. 继承能够有效的进行代码的管理,当某个类有问题只要修改这个类就行,而其继承这个类的子类往往不需要就修改
class People:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show_message(self):
        print("%s的年龄为%d" % (self.name, self.age))


class Student(People):
    pass


if __name__ == '__main__':
    s1 = Student("summer", 20)
    s1.show_message()
    

三、多态

# -*- coding: utf-8 -*-


class Animal:
    def call(self):
        print("汪汪汪")


class Cat(Animal):
    def call(self):
        print("喵喵喵")


class Dog(Animal):
    pass


class Bird(Animal):
    def call(self):
        print("唧唧唧")


if __name__ == '__main__':
    cat = Cat()
    bird = Bird()
    dog = Dog()
    cat.call()
    bird.call()
    dog.call()

运行结果:

喵喵喵
唧唧唧
汪汪汪

上面代码中,基类为Animal,由此创建出三个子类:Cat、Dog、Bird。其中Animal类中已经定义了call函数,Dog直接继承了这个函数,而Cat和Bird中重写了call函数。这样的做法就叫做多态,即一个函数可以在不同的实例中通过重写实现多样的类似功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值