Python-24章 面向对象-封装

面向对象的三大特征

封装,继承,多态

封装

1.对属行的封装

把多个信息保存在一个对象里面

2.对功能的封装

类执行的动作函数

3.模块

把很多的类封装到一个py文件里

4.包

把很多的py文件放在一个文件夹里

继承

子类可以可以自动拥有父类中除了私有属性以外的其他内容.

子类可以自动拥有父类中除了私有属性外的其他所有内容. 说白了, 儿子可以随便用爹的东西. 但是朋友们, 一定要认清楚一个事情. 必须先有爹, 后有儿子. 顺序不能乱, 在python中实现继承非常简单. 在声明类的时候, 在类名后面添加一个小括号,就可以完成继承关系. 那么什么情况可以使用继承呢? 单纯的从代码层面上来看. 两个类具有相同的功能或者特征的时候. 可以采用继承的形式. 提取一个父类, 这个父类中编写着两个类相同的部分. 然后两个类分别取继承这个类就可以了. 这样写的好处是我们可以避免写很多重复的功能和代码. 如果从语义中去分析的话. 会简单很多. 如
果语境中出现了x是一种y. 这时, y是一种泛化的概念. x比y更加具体. 那这时x就是y的类. 比如. 猫是一种动物. 猫继承动物. 动物能动. 猫也能动. 这时猫在创建的时候就有了动物的"动"这个属性. 再比如, 白骨精是一个妖怪. 妖怪天生就有意个比较不好的功能叫"吃人", 白骨精一出生就知道如何"吃人". 此时 白骨精继承妖精. 话不多说.上代码.

#继承
class foo():
    def getmoney(self):
        print("拿钱")

class bar(foo):
    pass
b = bar()
b.getmoney()
# 输出:拿钱
class animal():
  def dong(self):
      print("动物会动")


class cat(animal):
  def dong(self):  #类中写了和父类一模一样的方法,这个叫方法的覆盖
      print("猫是动物,猫会动")
  def catmove(self):
      print("猫会动,猫会抓老鼠")


c = cat()  # 创建的是猫
c.dong()  # 类中的方法查询顺序,先找自己再找父类
#输出:猫是动物,猫会动

Python支持多继承


class foo1:
    def getmoney(self):
        print("给我一千万")
class foo2:
    def play(self):
        print("带我去玩一天")
class bar(foo1,foo2): #就近原则,离当前类最近的,先找foo1的,如果有就不会去找foo2了
    pass
b =bar()
b.getmoney()  #输出:给我一千万
b.play()  #输出:带我去玩一天
多态性

同一个对象,多种形态
Python支持的是鸭子类型

#Python支持的是鸭子类型
def func(yazi):
    yazi.gagajiao()
#函数写的是鸭子,但是要的是能嘎嘎叫的,不管传进来什么只要能嘎嘎叫就行.会嘎嘎叫的就是好鸭子
#例如,老师经常会说:学习好的就是好学生

优点:超强的可扩展性

发布了130 篇原创文章 · 获赞 11 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章