美文网首页
Python | 面向对象编程进阶OOP特征:继承与多态

Python | 面向对象编程进阶OOP特征:继承与多态

作者: 82a7fe2508f4 | 来源:发表于2022-04-11 11:37 被阅读0次

继承的实现 / 深度优先和广度优先 / 经典类和新式类

一、继承 extends

继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

● 猫可以:喵喵叫、吃、喝、拉、撒

● 狗可以:汪汪叫、吃、喝、拉、撒

例如:

我们发现无论是猫还是狗,都有共同的行为,同时也有自己个性的行为叫。

(一)继承的语法

父类-子类的纵向编程模式。

● 注意,在继承关系下,子类将会拥有父类全部的方法(即,父类方法可在子类对象中访问调用)

示例:

ch10-demo07 -extends.py

UML,类图设计,Cat类和Dog类继承于Animal动物类。

说明:

通过类图我们可以看出:

● Animal类有eat(吃)、drink(喝)、 shit(拉)、pee(撒)四个公共方法。

● Cat和Dog类在继承了父类Animal的同时, 又有各自自己的Call方法。

因此,我们可以得出一个结论:一般共有的方法可以抽象出来放在父类中,子类在继承父类的同时凸显出自己个性的方法。

示例:

ch10-demo07-extends.py

创建Animal父类,与其子类:Cat

此处省略 Dog 类代码(与Cat类类似)……

(二)多重继承

Q: 那么问题又来了,多继承呢?

① 是否可以继承多个类?

② 如果继承的多个类每个类中都定了相同的函数,那么那一个会被使用呢?

答:

① Python的类可以继承多个类,不像很多高级编程语言Java和C#那样只能继承一个类(单根语系)。

② 类如果继承了多个类,那么其对象调用寻找方法的方式是: 广度优先

示例5:

ch10-demo08-extends-methods.py

class A():

def f(self):

print('A')

class B():

def f(self):

print('B')

class C(A,B):

pass

s = C()

s.f() # A

......

class C(A,B):

pass

class D(A,B):

def f(self):

print("D")

class E(C,D):

pass

s = E()

s.f() # D

(三)继承下的super()概述

● 在Python面向对象的继承特征下,若子类中需调用父类的方法,则需要使用super()来实现。

示例:

ch9-demo07-example-inherit.py

(四)当super遇到_init_

我们以一个房屋作为示例。

示例:

ch9-demo08-example-inherit.py

二、多态

Python不支持多态并且也用不到多态,多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚“鸭子类型”。

Q:什么是“鸭子类型”?

鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。这个概念的名字来源于由James Whitcomb Riley提出的鸭子测试,“鸭子测试”可以这样表述:

示例:

为了让Func函数既可以执行S1对象的show方法,又可以执行S2对象的show方法,所以,定义了一个S1和S2类的父类

而实际传入的参数是:S1对象和S2对象

相关文章

  • OC中自定义初始化 与 方法分类

    面向对象的三大特征, 封装, 继承与多态!面向对象编程OOP(Object Oriented Programmin...

  • Python | 面向对象编程进阶OOP特征:继承与多态

    继承的实现 / 深度优先和广度优先 / 经典类和新式类 一、继承 extends 继承,面向对象中的继承和现实生活...

  • Python札记34_继承(待更新)

    面向对象编程OOP有以下三个特征,本篇札记中主要讨论继承的知识点: 继承 多态 封装 继承 概念 继承是面向对象设...

  • 面向对象编程

    1. 面向过程、面向对象 OOP、函数式编程 2. 面向对象三大基本特征:封装、继承、多态 封装: 隐藏内部的变量...

  • Java面试总结

    1.什么是OOP、AOP OOP即面向对象编程OOP三大特征:封装、继承、多态OOP五大原则:单一职责原则 (Si...

  • Dart的构造方法及属性(setter/getter)

    面向对象编程(OOP)的三个基本特征是:封装、继承、多态 Dart所有的东西都是对象,所有的对象都继承自Objec...

  • Python札记37_多态和封装(私有化)

    在Python中前面几篇札记中的继承,和本文中即将讲解的多态和封装是面向对象编程 OOP的三个重要特征。 Pyth...

  • SpringAOP以及动态代理

    AOP,即面向切面编程,算是OOP(面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次...

  • Flutter/Dart - 对象/类

    前言 面向对象编程(OOP)的三个基本特征是:封装、继承、多态 dart中所有的东西都是对象,所有的对象都继承自o...

  • spring的AOP分析

    AOP的引入 AOP 面向切面编程。可以说是面向对象编程(OOP)的完善和补充。OOP引入了封装,继承,多态等概念...

网友评论

      本文标题:Python | 面向对象编程进阶OOP特征:继承与多态

      本文链接:https://www.haomeiwen.com/subject/nfsisrtx.html