zoukankan      html  css  js  c++  java
  • 10.24

    组合

      什么是组合?

    一个对象的属性是来自另外一个类的对象,称之为组合

      为什么要的组合?

    组合也是用来解决类与类之间代码冗余

      怎么用?

    class Foo:
        a=111
        def __init__(self,x,y):
            self.x=x
            self.y=y
        def func1(self):
            print('Foo内的功能')
    class Bar:
        b=222
        def __init__(self,m,n):
            self.m=m
            self.n=n
        def func2(self):
            print('Bar中的功能')
    obj1=Foo(10,20)
    obj2=Bar(30,40)
    obj1.xxx=obj2
    
    print(obj1.x,obj1.y,obj1.a,obj1.func1)
    print(obj1.xxx.m,obj1.xxx.n,obj1.xxx.b,obj1.xxx.func2)

    封装

      什么是封装?

    装是指把属性装进一个容器,封是指隐藏但是这种隐藏是对外部对内的

      为什么要封装?

    封装不是单纯意义的隐藏

    封装数据属性的目的:将数据属性封装起来,类外部的使用就无法直接操作该数据属性了

    需要类内部打开一个借口给试用装,类的设计者可以在接口之上附近任意逻辑,从而严格控制试用装对属性的操作

      封装的目的?

    隔离复杂度

      怎么要封装?

    只要在属性前加上__开头,该属性就会被隐藏起来

    该隐藏有以下几个特点:

    1.只是一种语法意义上的变形,即__开头的属性汇总检测语法时发生变形(_类名__属性名)

    2.这种隐藏是对外不对内的,因为在类内部检测语法时所有的代码都统一发生了变形

    3.这种变形只是在语法检测阶段时发生一次,在类定义之后新增的__开头的属性并不会发生变形

    4.如果父类不想让子类覆盖自己的属性,可以在属性前加__开头

     property装饰器

    多态与多态性

  • 相关阅读:
    DataGridView如何获取某个数据
    扩展方法
    base和this关键字
    装箱和拆箱
    var,object和dynamic
    const和readonly
    react native回调函数刷新页面
    react native打包android,android9.0以上版本http请求不了怎么办?
    react native中android app怎样打包发布
    React Native 实现页面返回监听
  • 原文地址:https://www.cnblogs.com/zhanggq/p/9846117.html
Copyright © 2011-2022 走看看