Python的面向对象编程——封装、继承和多态

本文详细介绍了Python中的面向对象编程,包括封装的概念与实践,如如何封装属性和方法,以及封装的例子。接着讲解了继承,阐述了什么是继承,单继承、多继承的语法结构,以及方法的重写。最后,讨论了多态的原理,通过实例展示了如何在继承基础上实现多态效果。
摘要由CSDN通过智能技术生成

一. 封装

1. 什么是封装?

如第一篇文章所述https://mp.csdn.net/postedit/88782209,封装的概念就是将对象的信息放进类中,然后通过调用类来产生特殊的对象。在这个过程中,封装既可以实现对共有属性和共有方法的封装,也可以实现对私有属性和私有方法的封装。私有方法和私有属性原则上不会被外界调用【也有调用私有属性和私有方法,只不过私有属性和方法相当于隐私,尽可能不要调用】

2. 封装的举例

例子:对象张飞通过Human类来创建,张飞的属性(名字)和张飞的方法(哈哈笑)封装在Human中。

#!usr/bin/python
class Human(object):
    def __init__(self,name):
        self.name = name
    def large_smile(self):
        print("%s 哈哈笑" % self.name)
zhangfei = Human("张飞")#调用封装的属性

zhangfei.large_smile()#调用封装的方法
>>>张飞 哈哈笑

PS:object是Python2常用的基类,在Python3中不声明也可以,为了养成良好的编程习惯和避免因版本造成出现错误,以后定义父类时可以使用基类object

二. 继承

1 什么是继承?

谈继承的前提必须先提几个概念,子类、父类、类属性和类方法。举例分析:

狗类可以继承动物类中的属性和方法,哮天犬可以继承狗类动物类中的属性和方法。

2 单继承

子类只有一个父类,叫做单继承。

语法结构 :

class 父类():

    pass

class 子类(父类):

    pass

3 多继承

子类有多个父类叫做多继承。

语法结构:

class 父类1():
    pass
class 父类2():
    pass


class 父类N():
    pass

class 子类(父类1,父类2,父类3,...父类N)

在多继承时,可以简单地认为子类括弧()中父类出现的顺序就是子类调用父类属性和方法的顺序。 

4 继承的特殊情况——方法的重写

子类重写父类的方法有两种方式:

(1)子类在自己结构中直接重写一个重名的方法,后续调用子类创建对象时,只会使用子类的方法和属性构建对象。

(2)子类在自己结构中重写重名的方法,但是使用super类类.】+方法的形式扩展父类的方法。

举例:哮天犬重写dog类中的eat方法

class dog():
    def __init__(self,name):
        self.name = name
    def eat(self):
        print("%s chichi" %self.name)
class xiaotianquan(dog):
    def eat(self):
        print("%s 大口吃" %self.name)
        super().eat()
        print("==========>>>>")

xiaotianquan=xiaotianquan("哮天犬")
xiaotianquan.eat()
哮天犬 大口吃
哮天犬 chichi
==========>>>>

 

三. 多态

1 什么是多态

多态指的是在继承的基础上,多个子对象从父类中继承相同的方法产生不一样的结果。

2 举例

#!usr/bin/python
class dog(object):
    def __init__(self,name):
        self.name = name
    def game(self):
        print("%s 蹦蹦玩耍" % self.name)
class xiaotianquan(dog):
    def game(self):
        print("%s  飞到天上去玩耍" % self.name)
class person(object):
    def __init__(self,name):
        self.name = name
    def game_with_dog(self,dog):
        print("%s 和 %s 快乐的玩耍" % (self.name,dog.name))
        dog.game()
xiaoming = person("小明")
wangcai = dog("旺财")
xiaoming.game_with_dog(wangcai)
小明 和 旺财 快乐的玩耍
旺财 蹦蹦玩耍

使用xiaotianquan类创建飞天旺财,并再次调用xiaoming.game_with_dog方法:

#!usr/bin/python
class dog(object):
    def __init__(self,name):
        self.name = name
    def game(self):
        print("%s 蹦蹦玩耍" % self.name)
class xiaotianquan(dog):
    def game(self):
        print("%s  飞到天上去玩耍" % self.name)
class person(object):
    def __init__(self,name):
        self.name = name
    def game_with_dog(self,dog):
        print("%s 和 %s 快乐的玩耍" % (self.name,dog.name))
        dog.game()
xiaoming = person("小明")
wangcai = xiaotianquan("飞天旺财")
xiaoming.game_with_dog(wangcai)
小明 和 飞天旺财 快乐的玩耍
飞天旺财  飞到天上去玩耍

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值