zoukankan      html  css  js  c++  java
  • 继承

    继承

    什么是继承

    继承就是一种关系

    描述两个对象之间,什么是什么的关系

    如同麦兜,佩奇,猪八戒

    他们都是猪,他们就是继承了猪的特征

    为什么要使用继承:

    继承的衣服可以直接使用被继承的一方已经有的东西

    在程序中,继承描述的是类和类之间的关系

    例如 a继承了b ,a就可以直接使用b有的方法和属性

    a称之为子类,b称为父类,又称为基类

    python中的语法

    class 类名称:
    
    # 原来的
    
    pass
    
    --------------
    
    class 类名称(父类):
    
    # 有继承的,
    
    # 一个子类可以同时继承多个父类()
    
    # # 有可能多个类中有相同的值,该如何解决呢?
    

    抽象:

    不具体,不清晰,很模糊,不容易看懂

    将多个子类中相同的部分进行抽取,形成一个新的类,这个过程也称之为抽象的过程

    # 对象自己> 所在的类 > 找父类 > 父类的父类 ...> ...Object

    正确的使用继承:

    1:先抽象,后继承

    2:继承一个先有的类,然后扩展或者修改原始的功能

    派生(子类):

    当一个子类中出现了一个与父类中不同的内容时,这个子类就被称为派生类

    通常情况,子类都会写一些新的代码,不可能和父类完全一样,即通常都是派生类

    所以派生类值的就是子类

    覆盖:

    也称为重写 overwrite

    当子类出现了与父类完全一致的属性或方法,就会覆盖掉父类的属性和方法

    练习:实现一个可以限制元素类型的容器(字典,列表,元组,集合,字符串)

    5实现一个可以限制元素的类型的列表

    子类访问父类中的内容

    #减少代码的冗余

    方法1:

    # python2老方法

    super(当前类名称,self).你要调用的父类的属性或方法

    class Incr(Pro):

    ​ def init(self, val):

    ​ super(Incr, self).init(val)

    # 调用 父类(Pro)的init,吧val传进去

    方式2:

    # python3新方法(推荐)

    super().你要调用的父类属性或方法

    方式3:

    # 与继承无关

    类名称.你要调用的父类属性或方法(self)

    强调:

    当你继承一个现有的类,并且你覆盖了父类的init方法时,必须在初始化方法的第一行调用父类的初始化方法,并传入父类所需的参数

    组合

    总结 # 组合,把一个对象作为另外一个对象的属性)

    也是一种关系

    # 描述两个对象之间 是什么有什么的关系

    (想用你的对象,又不是继承)

    (就像你用手机,你是把手机的功能拿过来,而不是把继承手机,把自己变成手机)

    (写的代码尽量不耦合,(相同性))

    例如,学生有手机,游戏中的角色有某些装备

    目的:

    重用现有代码,

    什么时候使用继承:分析两个类的关系,到底是不是,什么是什么的关系

    什么时候使用组合,如果两个类之间没有太大的关系,完全不属于同类

    组合相比继承,耦合度更低

  • 相关阅读:
    jquery
    gulp 入门
    bower 教程
    webstrom管理git
    修改页面浏览器自动刷新
    兼容IE低版本
    js之触屏事件篇
    js之日期篇
    设置浏览器默认样式
    Listview四种视图VIEW
  • 原文地址:https://www.cnblogs.com/pscly/p/11272026.html
Copyright © 2011-2022 走看看