Python第四十七讲面向对象核心——继承 单继承方法重写零基础精讲
自此刻起, 自此课堂起始之时, 我们得以正式迈入进一步高级的进程, 直面针对对象的三大主要根本核心特性, 分别是继承, 以及封装, 还有多态。之前我们学习了类跟对象, 还有构造方法, 以及实例属性与方法, 至此已然能够独立去创建类, 完成对自身代码逻辑的封装。可是在实际开展开发工作的时候, 我们常常会碰到多个类其功能存在相似之处, 以及代码出现重复这种情况。那继承, 它可是用来处理代码冗余现象、达成代码复用目的最为关键的语法, 它同样还是后续去学习框架、开展项目开发以及进行类拓展的根基所在, 对于零基础的人来讲, 绝对得把它彻底弄明白。一、什么是继承通俗理解生活里存在着继承这种情况, 孩子会遗传父母的身高, 孩子会遗传父母的长相, 孩子会遗传父母的性格, 并且孩子还能够拥有属于自身独一无二的特点。那个处于程序之中的继承, 存在这样一种情况: 有一个类, 它能够直接去拥有另外一个类的全部属性以及所有方法, 并且是不需要再次重复去编写代码的状态。我们定义两个专属名词全程通用1. 父类, 也就是基类, 是那种会被继承的类, 它有着公共的, 并且是通用的代码, 还有功能。2. 被继承的类, 会被子类自动拥有其所有功能, 子类还能够拓展自身新功能, 此即为子类派生类。继承的核心作用开发必懂1. 代码重用, 公共代码仅撰写一回, 全部子类径直开展调用, 与重复制造车轮相互辞别。2. 代码的层级呈现出清晰的状态, 其中通用的功能被放置在父类之中, 而独有的功能则都放在子类里面, 如此一来项目的结构变得更为规范。3. 利于往后进行维护, 去改动父类的公共逻辑, 致使所有子类一同产生作用, 无需逐个去做修改, 是的。二、单继承语法最常用对于单继承而言, 情况是这样的存在一个子类, 它仅仅继承一个父类, 这属于日常开发中, 大部分也就是90%的使用场景, 并且其语法是极为简洁的。基础语法格式# 定义父类class 父类名:# 公共属性、公共方法pass# 定义子类继承父类class 子类名(父类名):# 子类独有属性、独有方法pass核心规则是, 子类在括号之内写入父类名, 这样就能够完成继承, 并且默认继承父类的所有实例属性以及普通方法, 是了。三、零基础实战手写继承案例我们用最易懂的「动物类」案例演示继承的完整用法- 父类动物所有动物通用功能吃饭、睡觉- 子类狗狗继承动物所有功能新增独有功能看门完整可运行代码# 1. 定义父类通用动物类class :# 父类构造方法通用属性def (self, name):self.name name # 动物名称# 父类通用方法吃饭def eat(self):print(f{self.name} 正在吃东西)# 父类通用方法睡觉def sleep(self):print(f{self.name} 正在睡觉)# 2. 定义子类狗狗类继承 父类class Dog():# 子类独有方法def guard(self):print(f{self.name} 正在看家护院)# 3. 创建子类对象dog Dog(小黄狗)# 4. 调用父类继承的方法无需重复编写dog.eat()dog.sleep()# 5. 调用子类独有方法dog.guard()运行结果小黄狗 正在吃东西小黄狗 正在睡觉小黄狗 正在看家护院核心总结子类Dog当中, 没有去写eat()方法与sleep()方法, 然而却能够直接将其进行调用, 这便是继承所具备的代码复用所展现出来的独特魅力。四、重点知识点方法重写继承并非是固定不变的那种状态要是父类所拥有的方法没办法满足子类所需要的情况, 那么是允许子类去重新编写父类方法的。什么是方法重写假如子类去定义与父类名称相同的方法, 那么会对父类原本有的方法进行覆盖, 进而优先去执行子类自身的逻辑。实战演示重写父类方法承接上面所讲的案例, 所有物种睡觉均是平常的睡觉方式, 然而狗这种动物睡觉时会进行警觉地守护, 我们重新撰写sleep方法。class :def (self, name):self.name namedef eat(self):print(f{self.name} 正在吃东西)def sleep(self):print(f{self.name} 正在睡觉)# 子类重写父类sleep方法class Dog():# 重写父类同名方法def sleep(self):打印, 使用格式化字符串, 其中包含, 自身的名称, 趴着处于浅睡眠状态, 时刻不间断地保持警惕。def guard(self):print(f{self.name} 正在看家护院)# 测试dog Dog(大黄狗)dog.eat() # 调用父类原方法dog.sleep() # 调用子类重写后的方法运行结果大黄狗 正在吃东西大黄狗 趴着浅睡时刻保持警惕重写核心规则1. 方法名、参数必须和父类完全一致2. 子类重写后优先执行子类自己的方法3. 仅重写需要修改的方法不需要修改的直接继承即可五、拓展子类调用父类被重写的方法在好多场景之中, 我们一方面想着去留存父类原本就有的那个逻辑, 另一方面又期望能够增添属于子类独特的那种功能, 并不要求予以彻底全面覆盖。可以用 super() 关键字调用父类被重写的方法class Dog():def sleep(self):# 先执行父类原有睡觉逻辑super().sleep()# 再执行子类新增逻辑打印, 使用格式化字符串, 其中包含, 当前对象的名字, 就算睡觉的时候, 也是一直在守护着主人。# 测试dog Dog(小黑狗)dog.sleep()运行结果小黑狗 正在睡觉小黑狗 睡觉也在守护主人super() 核心作用- 自动指代父类无需手动写父类名能够完美达成「继承原本所具备的功能, 再去拓展全新的功能」这样的情况, 属于项目开发当中使用频率较高的一种用法。六、本节课核心知识点总结1. 继承作用代码复用、简化层级、方便维护2. 核心概念父类被继承、子类继承者3. 单继承语法 class 子类(父类)4. 方法重写子类重写父类同名方法覆盖原有逻辑5. super()调用父类方法保留旧逻辑、拓展新逻辑七、课后作业零基础必练1. 定义父类 包含属性姓名、年龄、方法跑步2. 定义子类 继承 新增独有方法学习3. 重写跑步方法学生跑步输出专属文案4. 使用super()保留父类跑步逻辑