面向对象的三大特性之继承
# 面向对象的三大特性之继承# 当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好 (如机器人) # 当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好 (动物——猫) # 继承同时有两种含义:1,继承基类的方法,并且做出自己的改变或扩展(代码重用),这种意义并不大,因为它使子类和基类出现强耦合 # 2,声明某个子类兼容于某基类。定义一个接口类,子类继承接口类,并实现接口中定义的方法 # 接口继承只是接口类规定了子类必须实现的方法,但是接口类里不去实现,子类继承后,在子类中再写具体实现的方法 # 可以导入abc模块,并使用装饰器@abc.abstractmethod,限定子类必须要定义接口类中的方法import abc # 导入abc模块class AllFile(metaclass=abc.ABCMeta): # 定义接口类@abc.abstractmethod # 使用装饰器,限定子类中必须要定义下面的方法def read(self): # 仅有方法名称,并没有具体内容,仅是为了规范子类pass@abc.abstractmethoddef write(self):passclass Disk(AllFile): # 子类Disk继承AllFile接口类def read(self): # 必须定义接口提供的两个方法,否则实例化时会报错print('Disk read') # 方法的具体实现代码def write(self):print('Disk write')class Cdrom(AllFile):def read(self):print('Disk read')def write(self):print('Disk write')d = Disk()# 新式类的继承顺序(广度优先) print(Disk.__mro__) # 显示新式类的继承顺序方法1 print(Disk.mro()) # 显示新式类的继承顺序方法2# 子类中调用父类的方法 class Vehicle:country = 'China'def __init__(self, name, speed, load, power):self.name = nameself.speed = speedself.load = loadself.power = powerdef run(self):print('父类方法')class Subway(Vehicle):def __init__(self, name, speed, load, power, line):super().__init__(name, speed, load, power) # 通过super()调用父类的方法self.line = line # 子类def show_info(self):print(self.name, self.speed, self.load, self.power, self.line)def run(self):super().run()print('子类方法')line13 = Subway('北京地铁', '10km/s', 10000, '电', 13) line13.show_info() line13.run()
转载于:https://www.cnblogs.com/dangrui0725/p/9457877.html
面向对象的三大特性之继承相关推荐
- Python - 面向对象编程 - 三大特性之继承
继承 继承也是面向对象编程三大特性之一 继承是类与类的一种关系 定义一个新的 class 时,可以从某个现有的 class 继承 新的 class 类就叫子类(Subclass) 被继承的类一般称为父 ...
- 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态
介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...
- Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态
Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...
- C++ 面向对象程序三大特性之 继承
目录 继承的概念 继承的定义及使用 继承方式和访问权限 基类和派生类对象的赋值转换 继承中的各成员的作用域 派生类的默认成员函数 构造函数 拷贝构造 赋值运算符重载函数 析构函数 继承与友元 继承与静 ...
- Python全栈开发——面向对象的三大特性(继承 多态 封装)
1.继承 1.两层意思 改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o:def ...
- 一文带你了解java面向对象的三大特性:继承、封装、多态
文章目录 1.继承 2.封装 3.多态 本篇文章以同步到:https://www.bithachi.cn/posts/c72fe2cc.html 1.继承 继承是类与类的一种关系,子类拥有父类的所有( ...
- Python面向对象编程三大特性之继承
继承 继承 继承的语法 重写 扩展 引用 super().父类方法名 参数传递 code:_6Inheritance.py # ************************************ ...
- 面向对象之三大特性:继承,封装,多态
python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...
- 面向对象之:三大特性:继承(已讲),封装,多态
目录 1.封装 2.多态 3.类的约束 4. super()深入了解 前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个 ...
最新文章
- Android:四种启动模式分析
- mybatis trim标签_MyBatis学习笔记
- 基于 HTML5 WebGL 的 3D 棉花加工监控系统
- echarts柱状图 与轴不重叠_用Echarts做堆积的柱状图,当横轴为“time”类型时,都是从0开始显示,而不是叠加,为什么会这样?...
- Redis数据库(一)——Redis简介、部署及常用命令
- oracle 设置输出显示中文乱码,修改oracle当前会话的语言环境,解决oracle显示中文乱码的问题 | 信春哥,系统稳,闭眼上线不回滚!...
- MySQL笔记-解决InnoDB: Could not find a valid tablespace file for 'mysql/innodb_index_stats'
- 在anaconda环境下搭建python3.5 + jupyter sparkR,scala,pyspark
- 线性回归、二次回归、随机采样一致性ransac的数据拟合
- 使用re正则匹配网络请求到的正文内容,筛选出jpg图片链接
- FreeRTOS 教程指南 学习笔记 第四章 队列管理
- Tabular Editor学习笔记_2
- 38.伪造源站抑制的ICMP数据包
- 高等数学和数学分析教材推荐及其学习方法浅谈
- C4D-学习笔记-3-建模+渲染
- leetcodeOj:66. Plus One
- 尺寸工程分析软件-尺寸公差分析软件-尺寸链计算软件
- python图像处理:核磁共振图像(3D)的缩放
- 2016在电影院看过的电影
- DLX精确覆盖 hdu4069 Squiggly Sudoku
热门文章
- 三.Hystrix资源隔离
- 做图与树做到吐的一天
- UVALive 7040 Color
- 8.2.1.2 How MySQL Optimizes WHERE Clauses MySQL 优化WHERE 子句
- 结对编程——四则运算过程
- [凯立德]2014春季版3121J0H+3121D0H
- 【字符串操作之】大小写转换→→toLocaleLowerCase、toLocaleUpperCase
- asp.net 获取 当前日期时间 及 前后N天日期时间(DropDownList数据绑定)
- 【090723】动态调用webservice
- samli文件_5.3 smali文件格式