python学习-64 面向对象三大特性----继承1
面向对象三大特性
1.三大特性?
继承,多态,封装
2.什么是继承?
类的继承和现实生活中的父与子,继承关系是一样的,父类为基类。
python中的类继承分为:单继承和多继承
3.举例说明
class Dad:
money = 100
def __init__(self,name):
self.name =name
print(name)
def hit(self):
print('%s 正在打孩子' %self.name) class Son(Dad):
pass s1 = Son('abc') print(Son.money)
s1.hit()
运行结果:
abc
100
abc 正在打孩子 Process finished with exit code 0
4.什么时候用继承?
----当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。
----当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好。
class Animals:
def eat(self,name):
print('%s 正在吃'%self.name)
def drink(self,name):
print('%s 正在喝'%self.name)
class Cat(Animals):
def __init__(self,name):
self.name = name class Dog(Animals):
def __init__(self,name):
self.name = name c1 = Cat('xiaobai')
c1.eat(Animals)
c1.drink(Animals) d1 = Dog('xiaohei')
d1.drink(Animals)
d1.eat(Animals)
运行结果:
xiaobai 正在吃
xiaobai 正在喝
xiaohei 正在喝
xiaohei 正在吃 Process finished with exit code 0
5.接口继承与归一化设计
父类当中规定好了,子类的方法,但是不去实现。只要子类继承了父类,需要自己再去实现自己的方法。
举例:(一切皆文件)
import abc
class Test(metaclass=abc.ABCMeta): # 加上一个限制,只是为了规范子类
@abc.abstractclassmethod # 必须有以下函数,不然无法实例化
def read(self):
pass
@abc.abstractclassmethod # 必须有以下函数,不然无法实例化
def write(self):
pass class Disk(Test):
def read(self):
print('this disk read')
def write(self):
print('this is disk write') class CD(Test):
def read(self):
print('this cd read')
def write(self):
print('this is cd write') class Mem(Test):
def read(self):
print('this is mem read')
def write(self):
print('this is mem write') d1 = Disk()
d1.read()
d1.write() c1 = CD()
c1.read()
c1.write() m1 = Mem()
m1.read()
m1.write()
运行结果:
this disk read
this is disk write
this cd read
this is cd write
this is mem read
this is mem write Process finished with exit code 0
6.继承顺序
---- python的类可以继承多个类,Java和C#中则只能继承一个类
----python的类如果继承多个类,那么其寻找方法的方式有两种,一是深度优先,二是广度优先

~~~~子类会先于父类被检查
~~~~多个父类会根据它们在列表中的顺序被检查
~~~~如果对下一个类存在两个合法的选择,选择第一个父类
python学习-64 面向对象三大特性----继承1的更多相关文章
- python学习 day23 面向对象三大特性之继承
### 面向对象三大特性值继承#### 1.什么是继承 继承是一种关系,必须存在两个对象才可能产生这种关系,在现实生活中的继承,王思聪可以继承王健林的财产 被继承的成为父,继承的一方成为子 在程序中, ...
- Python学习 :面向对象 -- 三大特性
面向对象的三大特性 一.封装 把数据.值.变量放入到对象中 构造方法 _init_方法 特殊作用: 在 obj = 类名() 执行时: 内部自动执行两个步骤: 1.创建对象 2.通过对象执行类中的一个 ...
- [.net 面向对象编程基础] (12) 面向对象三大特性——继承
[.net 面向对象编程基础] (12) 面向对象三大特性——继承 上节我们说了面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低 ...
- Python入门-面向对象三大特性-继承
面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容. 例如: 猫可以:喵喵叫.吃.喝.拉.撒 狗可以:汪汪叫.吃.喝.拉.撒 如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实 ...
- Python()- 面向对象三大特性----继承
继承: 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类(基类或超类),新建的类是所继承的类的(派生类或子类) 人类和狗 有相同的属性, 提取了一个__init__方法,在这 ...
- python基础(24):面向对象三大特性一(继承)
1. 继承 1.1 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继 ...
- python之面向对象三大特性: 继承(单继承)
什么是继承 专业角度: B 继承 A类, B就叫做A的子类,派生类, A叫做B的父类,基类,超类. B类以及B类的对象使用A类的所有的属性以及方法. 字面意思: 继承就是继承父母所有的资产 class ...
- python基础(25):面向对象三大特性二(多态、封装)
1. 多态 1.1 什么是多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪. import abc class Animal(metaclass=abc.ABCMeta): #同一类事 ...
- C++面向对象三大特性
面向对象三大特性 继承 public protected private public继承 public protected 不可见 private继承 private private 不可见 pro ...
随机推荐
- 解决<c:if>无else的问题
之前发了一个jstl的if标签博客,说是jsp没有提供<c:else>标签.于是有大佬评论,说<c:choose></c:choose>可以解决,通过查资料和敲代码 ...
- inertia 服务端驱动的spa 开发框架
inertia 可以让我们开发server 驱动的单页面应用开发,从目前的github代码来看,代码量并不多,相关的文档也还比较少 introducing-inertia-js 这个连接值得看下 参考 ...
- 【UVA11988】破损的键盘
题目链接 维护一个链表,以及当前位置.head.tail的指针,模拟就行了 #include<iostream> #include<cstring> #include<c ...
- Fluent Meshing对称模型形成完整模型
原视频下载地址:https://pan.baidu.com/s/1i4NZnVZ 密码:ts5a
- edusoho上传视频弹出abort之解决方案
错误描述:edusoho上传如avi.mp4等容量大的图片(如100m以上或500m等)弹出abort提示框 原因:是因为web服务器apache默认上传文件有限制导致的 解决办法如下: (1)首先修 ...
- SpringMVC(上)
一.SpringMVC简介 (1)springMVC概述 Spring MVC属于SpringFrameWork的后续产品,Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块. 使用 ...
- fxjwind Calcite分析 - Volcano模型
参考,https://matt33.com/2019/03/17/apache-calcite-planner/ Volcano模型使用,分为下面几个步骤, //1. 初始化 VolcanoPlann ...
- PHP系列 | ThinkPHP5数据库迁移工具 migration
了解更多,请关注微信公众号 ThinkPHP5数据库迁移工具 migration 什么是Migration? migration用谷歌翻译是移民的意思,在PHP中我们将它理解为迁移,将Migratio ...
- PostgreSQL递归查询示例
PostgreSQL提供了WITH语句,允许你构造用于查询的辅助语句.这些语句通常称为公共表表达式或cte.cte类似于只在查询执行期间存在的临时表. 递归查询是指递归CTE的查询.递归查询在很多情况 ...
- 如何获取select下拉框中option选中的文本值
$(select的id或者class).change(function(){ $(this).find("option:selected").text() }) 源文:https: ...