面向对象三大特性

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. 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++-& ...

  2. circus web console 依赖tornado>3.2 无法访问的bug

    circus web console 是一个很不错的web 监控circus 工具,但是对于高版本一直存在一个bug 信息如下 Traceback (most recent call last): F ...

  3. [RN] React Native 查看console打印出来的内容

    我们在调试React Native 程序的时候,经常会用到Js的打印语句Console.log等 但我们一脸蒙逼的时候,启动的时候完全看不到打印的内容在哪儿呢??? 原来还要在命令行下输入一个语句才能 ...

  4. 奶牛抗议 DP 树状数组

    奶牛抗议 DP 树状数组 USACO的题太猛了 容易想到\(DP\),设\(f[i]\)表示为在第\(i\)位时方案数,转移方程: \[ f[i]=\sum f[j]\;(j< i,sum[i] ...

  5. JavaScript高级程序编程(二)

    JavaScript 基本概念 1.区分大小写,变量名test与Test 是两个不同的变量,且函数命名不能使用关键字/保留字, 变量命名规范: 开头字符必须是字母,下划线,或者美元符号,ECMAScr ...

  6. Java基础教程(全代码解析)

    字面量: 整数字面量为整型(int) 小数字面量为双精度浮点型(double) 数据类型: byte short int long float double 接下来代码展示理解 public clas ...

  7. ICEM-R-b

    原视频下载地址:https://pan.baidu.com/s/1i4JGk8d ;密码: 4xr2

  8. 两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这 句话对不对

    答:不对,有相同的 hash code这是java语言的定义:1) 对象相等则hashCode一定相等:2) hashCode相等对象未必相等 1.如果是基本变量,没有hashcode和equals方 ...

  9. (未完成)catalyst-system WriteUp(2019暑假CTF第一周reverse)

    目录 预备学习--Linux实践:ELF文件格式分析 一.概述 二.分析ELF文件头(ELF header) 三.通过文件头找到section header table,理解其内容 四.通过secti ...

  10. 大数据 | 分布式文件系统HDFS 练习

    本次作业来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3292 利用Shell命令与HDFS进行交互 以”./bin/dfs ...