zoukankan      html  css  js  c++  java
  • day21

    类的组合

    • 组合就是一个类的对象具备某一个属性,该属性的值是指向另外一个类的对象
    • 组合的好处:解决类与类之间代码冗余的问题

    组合的应用

    • 需求:假如我们需要给学生增添课程属性,但是又不是所有的学生一进学校就有课程属性,课程属性是学生选出来的,也就是说课程需要后期学生们添加进去
    • 实现思路:如果我们直接在学生中添加课程属性,那么学生刚被定义就需要添加课程属性,这就不符合我们的要求,因此我们可以使用组合能让学生未来添加课程属性

    多继承

    • OCP原则:多继承,少修改;继承的用途:增强基类,实现多

    1、多态

    • 在面向对象中,父类,子类通过继承联系在一起,如果可以通过一套方法,就可以实现不同的表现,就是多态
    • 一个类继承自多个类就是多继承,它将具有多个类的特征

    2、多继承弊端

    • 多继承很好的模拟了世界,因为事物很少是单一继承,但是舍弃简单,必然引入复杂性带来冲突
    • 如同一个孩纸继承了来自父母双方的特征
    • 多继承的实现会导致编译器设计的复杂度增加,所以现在很多语言也舍弃了类的多继承

    3、python多继承实现

    • 多继承带来路径选择问题,究竟继承哪个父类的特征
    • python使用MRO(method resolution order)解决基类搜索顺序问题

    4、多继承的缺点

    • 当类很多,继承复杂的情况下,继承路径太多,很难说清楚什么样的继承路径
    • python语法是允许多继承,但是python代码是解释执行,只有执行到的时候才发现错误

    5、用装饰器增强

    • 用装饰器增强一个类,把功能给类附加上去,哪个类需要,就装饰它
    • 优点:简单方便,在需要的地方动态增加,直接使用装饰器

    类的封装

    • 广义上面向对象的封装:代码的保护,面向对象的思想本身就是一种封装
    • 只让自己的对象能调用自己类中的方法
    • 狭义上的封装-面向对象三大特性之一(私有变量,用公有的方法封装私有属性,方法叫封装)
    • 把属性和方法都藏起来,不让你看见
    • 类的特性
      • 所有的私有,都是在变量左边加双下划线
      • 所有的私有,都不能在类的外部使用
      • 对象的私有属性
      • 类的私有方法
      • 类中私有的静态属性

    property特性

    一 、什么是特性property
    property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值。

    注意:此时的特性arear和perimeter不能被赋值

    二、为什么要用property

    将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉自己的name是执行了一个函数然后计算出来的,这种特性的使用方式遵循了统一访问的原则。

    被property装饰的属性会优先于对象的属性被使用

    而被propery装饰的属性,如sex,分成三种:
    1.property
    2.sex.setter
    3.sex.deleter

  • 相关阅读:
    CentOS7中Tomcat的安装和配置
    CentOS7中JDK的安装和配置
    Linux基本指令
    MySQL数据库索引:索引介绍和使用原则
    MongoDB基础篇2:数据库/用户/数据集合的增删改
    MongoDB基础篇1:安装和服务配置
    JSTL fn:replace()函数替换 换行符
    LeetCode440. 字典序的第K小数字
    kubeadm搭建kubernetes-1.13.2集群
    kubernetes(k8s)kubectl使用详解
  • 原文地址:https://www.cnblogs.com/xwjhyy/p/11654456.html
Copyright © 2011-2022 走看看