面向对象三大特性

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的更多相关文章

  1. python学习 day23 面向对象三大特性之继承

    ### 面向对象三大特性值继承#### 1.什么是继承 继承是一种关系,必须存在两个对象才可能产生这种关系,在现实生活中的继承,王思聪可以继承王健林的财产 被继承的成为父,继承的一方成为子 在程序中, ...

  2. Python学习 :面向对象 -- 三大特性

    面向对象的三大特性 一.封装 把数据.值.变量放入到对象中 构造方法 _init_方法 特殊作用: 在 obj = 类名() 执行时: 内部自动执行两个步骤: 1.创建对象 2.通过对象执行类中的一个 ...

  3. [.net 面向对象编程基础] (12) 面向对象三大特性——继承

    [.net 面向对象编程基础] (12) 面向对象三大特性——继承 上节我们说了面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低 ...

  4. Python入门-面向对象三大特性-继承

    面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容. 例如: 猫可以:喵喵叫.吃.喝.拉.撒 狗可以:汪汪叫.吃.喝.拉.撒 如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实 ...

  5. Python()- 面向对象三大特性----继承

    继承: 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类(基类或超类),新建的类是所继承的类的(派生类或子类) 人类和狗 有相同的属性, 提取了一个__init__方法,在这 ...

  6. python基础(24):面向对象三大特性一(继承)

    1. 继承 1.1 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继 ...

  7. python之面向对象三大特性: 继承(单继承)

    什么是继承 专业角度: B 继承 A类, B就叫做A的子类,派生类, A叫做B的父类,基类,超类. B类以及B类的对象使用A类的所有的属性以及方法. 字面意思: 继承就是继承父母所有的资产 class ...

  8. python基础(25):面向对象三大特性二(多态、封装)

    1. 多态 1.1 什么是多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪. import abc class Animal(metaclass=abc.ABCMeta): #同一类事 ...

  9. C++面向对象三大特性

    面向对象三大特性 继承 public protected private public继承 public protected 不可见 private继承 private private 不可见 pro ...

随机推荐

  1. BZOJ 1034: [ZJOI2008]泡泡堂BNB 贪心+排序

    比较神奇的贪心 有点类似于田忌赛马. 如果我方最弱强于对面最弱,则直接最弱pk最弱. 如果我方最强强于对面最强,那么直接最强间pk. 否则,试着用我方最弱 pk 对方最强,看是否能打成平手. code ...

  2. 开源项目 11 Ionic Zip

    using Ionic.Zip; using System; using System.Collections.Generic; using System.IO; using System.Linq; ...

  3. 12-ESP8266 SDK开发基础入门篇--PWM,呼吸灯

    https://www.cnblogs.com/yangfengwu/p/11094085.html PWM其实没有什么,就是看着官方给的API,,,然后就是用呗 对了,其实对于RTOS SDK版本的 ...

  4. linux命令之------Chmod命令

    Chmod命令 1)作用:linux和unix的文件调用权限分为三级:文件拥有者/群组/其他.利用chmod可以控制文件如何被他人所调用.(主要就是修改文件夹,文件的权限) 2)U表示该文件的拥有者, ...

  5. 加密hashlib模块

    目录 hashlib和hmac模块: hashlib模块: -hash: 特点: 大致流程: 注意: hmac模块: 特点: 注意:hmac模块只接受二进制数据的加密 hashlib和hmac模块: ...

  6. 微信小程序轮播组件

    在index.wxml中添加以下代码 <view> <swiper indicator-dots="{{indicatorDots}}" autoplay=&qu ...

  7. 刷题记录:2018HCTF&admin

    目录 刷题记录:2018HCTF&admin 一.前言 二.正文 1.解题过程 2.解题方法 刷题记录:2018HCTF&admin 一.前言 经过一个暑假的学习,算是正经一条web狗 ...

  8. 【Beta】软件使用说明——致社长

    目录 社团公众号关联上"北航社团帮"小程序 为什么要关联上"北航社团帮"小程序: 如何进行关联: 小程序中的社长相关功能 如何认证成为社长 如何管理社员.增删管 ...

  9. 第06组 Beta冲刺(1/5)

    队名:拾光组 组长博客链接 作业博客链接 团队项目情况 燃尽图(组内共享) 组长:宋奕 过去两天完成了哪些任务 准备beta冲刺的内容和分工 修改了后端的一些bug GitHub签入记录 接下来的计划 ...

  10. 范仁义html+css课程---6、表格

    范仁义html+css课程---6.表格 一.总结 一句话总结: 表格中最常用的元素就是table.tr.td.th,还有语义化的thead.tbody.tfoot标签 1.表格构成三个基本要素? t ...