python面向对象(封装,继承,多态)

学习完本篇,你将会深入掌握

  • 如何封装一个优雅的借口
  • python是如何实现继承
  • python的多态

封装

  • 含义:

    1.把对象的属性和方法结合成一个独立的单位,并尽可能隐蔽对象的内部细节(尤其是私有数据)

    2.目的:使对象以外的部分不能随意存取对象的内部数据(如属性),从而,使软件错误能够局部化,大大减少查错和排错的难度。

类的继承

  • 体现

    1.设置对象中的成员变量和方法的访问权限,使用

    __member(方法也是这样定义),只能被类内部的方法访问,不被外部访问。

    2.其它对象不能直接修改本对象所拥有的私有属性和私有方法。
  • 含义:

    1.子类自动地享用父类中拥有的属性和方法

示例

  • 继承优点

*示例1

例子:请确认各类之间的关系
plane(飞机)
military plane(军事机)
passenger plane (客机)
cargo plane (货物机)
fighter plane (战斗机)
Airliner (民用机)

*示例2

class employee(object):
name = “”
sex = “”
age = 0
def say():
return “hello world”
class manage(object):
name = “”
sex = “”
age = 0
# 发放工资特 有属性
putMoney = 0 def say():
return “hello world”
  • 示例3
class manage(employee):
#发放公司
putMoney = 0 #类中的方法
def say():
return “I am Manage”

继承的定义

  • 子类的成员有一部分是子类自己声明定义的。
  • 另一部分是从它的父类继承的。
  • 子类继承父类的成员变量作为自己的一个成员变量。
  • 继承父类的方法作为自己的方法。

继承的实现

class 类名( 父类):
成员变量赋值
成员方法声明 说明:
1、子类将自动继承父类中的公有成员
2、私有属性和方法不能被继承。
  • 子类中新增加的属性和方法是对父类的扩展
  • 子类中定义的与父类同名的属性是对父类属性的隐藏,同名的方法是对父类方法的覆盖

子类使用构造函数

  • 构造方法不能支持多态,一个类中只有一个
  • 如果子类没有构造方法,则它继承父类无参数的构造方法作为自己的构造方法
  • 如果两者都没有构造方法,系统默认调用无方法的构造方法
  • Super关键字可以调用父类的构造方法,但是必须使用在子类的构造方法中

成员变量的隐藏

  • 当子类中定义的成员变量只要和父类中的成员变量同名时,子类就隐藏了继承的成员变量

方法重写

  • 子类可以隐藏已继承的方法,子类通过方法重写来隐藏继承的方法
  • 方法重写:定义一个方法,并且这个方法的名字、参数个数与从父类继承的方法完全相同
  • 子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为
注意事项:方法覆盖注意事项:子类重写的父类方法的访问权限不能低于父类方法的访问权限。
  • 子类继承父类的speak()方法和cry()方法,但子类通过重写speak()隐藏了继承的speak()方法

super关键字

  • Python中既可以通过super来访问父类也可以通过父类类名来访问
  • 访问父类方法或者重写方法,如:super( subclass,self). Method([paramlist])
  • 访问父类属性,如:super( subclass,self). Attribute
  • 访问父类构造函数,如:super( subclass,self). init([paramlist])
  • 子类继承父类的speak()方法和cry()方法,在speak方法中使用super来访问父类cry、speak以及mVar属性

多态

  • 多态:是指一个程序中存在着同名不同实现的方法
  • 表现形式:

    1.重载:python不支持

    2.重写:子类中对父类方法进行重写(重新定义),但具体实现不一样

练习

  • 1.编写一个Ball(球)父类,包含属性(大小,重量,颜色),包含两个构造方法,一个默认的,一个接收(大小,重量,颜色)三个参数的构造方法。

    编写一个篮球子类,继承Ball(球),并打印出篮球的大小,重量和颜色。

  • 2.编写一个雇员类(Employee)包含有姓名、性别、年龄等属性,编写一个经理类(Manager),经理类继承雇员类。编写一个测试类,实例化一个经理对象,并输出经理的姓名、性别和年龄。

  • 3.有一个动物类(抽象类Animal),它有两个子类狗类(Dog)和猫类(Cat)实现抽象类Animal,在Animal类中有一个打招呼的方法say(),让它的两个子类重写父类打招呼的方法,实现各*

  • 4.编写一个Studeng类,其中包括(姓名、学号、班级、性别、年龄、家庭住址)和取得这些属性的方法,再增加一个sayHello()方法,用于输出学生的详细信息。

    1)创建Studeng类的对象,编写程序测试这些方法。

    2)创建两个学生对象,并比较二者的年龄,输出年龄较大的学生信息。

  • 5.编程实现商品以及图书,电器,电子产品(继承)

  • 6.编程实现计算圆柱体体积,圆锥体体积的方法(继承)

    1)计算圆柱体体积方法

    2)计算圆锥体体积方法

python面向对象(封装,继承,多态)的更多相关文章

  1. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  2. Java基础——面向对象(封装——继承——多态 )

    对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...

  3. python面向对象之继承/多态/封装

    老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(sel ...

  4. python面向对象(封装、多态、反射)

    目录 面向对象之封装 @property 面向对象之多态 面向对象之反射 面向对象之封装 含义 将类中的某些名字按照特殊的书写方式"隐藏"起来,不让外界直接调用,目的是为了不然外界 ...

  5. <python基础>封装,继承,多态,重写,重载

    什么是封装? 所谓的面向对象就是将我们的程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放到一个类里面,这就是封装.封装是我们所说的面相对象编程的特征之一.除此之外还有继 ...

  6. python面向对象-封装and多态

    python 接口类和抽象类 为什么讲封装之前要将这个东西? 我才不会说为什么 首先: python没有接口类这个概念!!!!!!!! 哈哈哈......神经病 python抽象类和接口类更接近于一种 ...

  7. Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

    Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ​ 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...

  8. java面向对象(封装-继承-多态)

    框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...

  9. Python 面向对象编程 继承 和多态

    Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...

随机推荐

  1. 基于ScheduledExecutorService的并发定时任务处理能力测试

    测试代码 定时器类 package business.util; import java.util.concurrent.Executors; import java.util.concurrent. ...

  2. 披着羊皮的Neo-reGeorg

    混迹 Web 安全行业许久,查杀网站后门已是家常便饭.时间久了,养"马"场也见的多了,Neo-reGeorg 算得上是同类中战斗力超群的"野马"了,也深受黑客和 ...

  3. DVWA-全等级验证码Insecure CAPTCHA

    DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法 ...

  4. S3C2440—2.裸机开发步骤及工具使用

    文章目录 一.裸机开发步骤简介 1.在X86架构的Windows系统中 2.在X86架构的Ubuntu系统中 3.ARM裸机开发 二.soucre insight使用 1.sourec insight ...

  5. 题解 P4111 [HEOI2015]小 Z 的房间

    题解 题目大意:给定一个无向图,求它的生成树个数. 一道裸的矩阵树定理,外加一些建图的技巧. 矩阵树定理 对于一个 \(Laplace\) 矩阵,其去掉任意一行后的行列式即为答案. 行列式不会的看这里 ...

  6. ES6中新增的数组知识记录

    JSON数组格式转换 let json = { '0': 'hello', '1': 'I am ', '2': 'michael', length:3 } 这就是一个JSON数组格式,跟普通的JSO ...

  7. .Net Core WebApi(三)--使用 IdentityServer4 4.1.1 踩坑记录

    目的:创建IdentityServer 并通过PostMan验证获取token 第一次配置如下 public class Config { public static IEnumerable<A ...

  8. ThreadLocal, volatile, synchronized, map, epoll, AQS简单总结

    ThreadLocal ThreadLocal主要是为了解决内存泄漏的问题,它是一种弱引用: 引用总共有四种,,我简单列一下: 强引用(Strong Reference):正常引用,根据垃圾回收算法, ...

  9. js函数和封装

    $就是jquery对象,$()就是jQuery(),在里面可以传参数,作用就是获取元素 js对象与jQuery对象的区别:jQuery对象是一个数组,jQuery对象转为js对象:[0] 取第一个即可 ...

  10. ES6中class的继承

    extends 子类的继承 super(); 调用父类的构造方法,只能在子类中执行 继承可以让子类获得父类的方法 属性,可以扩充 增加新的方法 属性等 父类(基类)--被继承的类 子类--继承后的类 ...