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 ...
随机推荐
- C1010 unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source
提示说是预编译出现问题,提示添加头文件stdafx.h,但是添加了也会继续有其他错误解决方法: 在菜单Project->Properties(或者直接快捷键Alt+F7)->C/C++-& ...
- circus web console 依赖tornado>3.2 无法访问的bug
circus web console 是一个很不错的web 监控circus 工具,但是对于高版本一直存在一个bug 信息如下 Traceback (most recent call last): F ...
- [RN] React Native 查看console打印出来的内容
我们在调试React Native 程序的时候,经常会用到Js的打印语句Console.log等 但我们一脸蒙逼的时候,启动的时候完全看不到打印的内容在哪儿呢??? 原来还要在命令行下输入一个语句才能 ...
- 奶牛抗议 DP 树状数组
奶牛抗议 DP 树状数组 USACO的题太猛了 容易想到\(DP\),设\(f[i]\)表示为在第\(i\)位时方案数,转移方程: \[ f[i]=\sum f[j]\;(j< i,sum[i] ...
- JavaScript高级程序编程(二)
JavaScript 基本概念 1.区分大小写,变量名test与Test 是两个不同的变量,且函数命名不能使用关键字/保留字, 变量命名规范: 开头字符必须是字母,下划线,或者美元符号,ECMAScr ...
- Java基础教程(全代码解析)
字面量: 整数字面量为整型(int) 小数字面量为双精度浮点型(double) 数据类型: byte short int long float double 接下来代码展示理解 public clas ...
- ICEM-R-b
原视频下载地址:https://pan.baidu.com/s/1i4JGk8d ;密码: 4xr2
- 两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这 句话对不对
答:不对,有相同的 hash code这是java语言的定义:1) 对象相等则hashCode一定相等:2) hashCode相等对象未必相等 1.如果是基本变量,没有hashcode和equals方 ...
- (未完成)catalyst-system WriteUp(2019暑假CTF第一周reverse)
目录 预备学习--Linux实践:ELF文件格式分析 一.概述 二.分析ELF文件头(ELF header) 三.通过文件头找到section header table,理解其内容 四.通过secti ...
- 大数据 | 分布式文件系统HDFS 练习
本次作业来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3292 利用Shell命令与HDFS进行交互 以”./bin/dfs ...