zoukankan      html  css  js  c++  java
  • 封装、继承与多态知识回顾

    封装、继承与多态知识回顾

    封装

    基本概念

    • 把一些数据封装成一个列表——数据封装
    • 将一些代码语句封装成一个函数方便调用——代码的封装
    • 将数据和代码封装在一起。用术语表示的话,就是可以将属性和方法进行封装,从而得到对象

    实例验证

    • 定义一个类,这个类中有属性和方法
    class Xiaoming():#类
        #属性
        height = 180
        weight = 75
        sex = "男"
    
        #方法
        def run(self):
            print("小明在跑步")
    
        def sleep(self):
            print("小明在睡觉")
    
    
    • 在类定义完成时就创建了一个类对象,它是对类定义创建的命名空间进行了一个包装。类对象支持两种操作:属性引用实例化

    • 属性引用的语法就是一般的标准语法:obj.name。比如XiaoMing.height和XiaoMing.run就是属性引用,前者会返回一条数据,而后者会返回一个方法对象

    #魔法方法_init_

    • 类在实例化过程中并不都是像上面例子一样简单的,一般类都会倾向将实例对象创建为有初始状态的,所以在类中可能会定义一个__init__的魔法方法,这个方法就可以帮助接收、传入参数。

    • 而一个类如果定义了__init__方法,那么在类对象实例化的过程中就会自动为新创建的实例化对象调用__init__方法

    继承

    基本概念

    • 所谓继承就是一个新类在另一个类的基础上构建而成,这个新类被称作子类或者派生类,而另一个类被称作父类、基类或者超类,而子类会继承父类中已有的一些属性和方法。

      class Mylist(list): #list难道不是一个参数吗?,这样说吧list本来也就是一个类所以继承问题本身也是就是一个嵌套的问题,就始终牢记什么int啊、list都是一个个的类,牢记该概念
          pass
      list_ = Mylist()
      list_.append(7)
      print(list_)
      
    • 比如上面这个例子,我并没有将list_定义成一个列表,但它却能调用append方法。原因是类Mylist继承于list这个基类,而list_又是Mylist的一个实例化对象,所以list_也会拥有父类list拥有的方法

    class Parent():
        def par(self):
            print("父类方法")
    
    class Child(Parent):
        pass
    child = Child()
    child.par()
    '''
    父类方法
    '''
    

    覆盖

    当子类中定义了与父类中同名的方法或者属性,则会自动覆盖父类对应的方法或属性.

    class Parent:
        def par(self):
            print('父类方法')
    class Child(Parent):
        def par(self):
            print('子类方法')
    child = Child()
    child.par()
    '''
    子类方法
    '''
    

    多态

    多态比较简单,比如定义两个类,这两个类没有任何关系,只是两个类中有同名的方法,而当两个类的实例对象分别调用这个方法时,不同类的实例对象调用的方法也是不同的

    记录学习的点点滴滴
  • 相关阅读:
    Java并发编程原理与实战九:synchronized的原理与使用
    Java并发编程原理与实战八:产生线程安全性问题原因(javap字节码分析)
    Java并发编程原理与实战七:线程带来的风险
    Java并发编程原理与实战六:主线程等待子线程解决方案
    Java并发编程原理与实战五:创建线程的多种方式
    Java并发编程原理与实战四:线程如何中断
    Java并发编程原理与实战三:多线程与多进程的联系以及上下文切换所导致资源浪费问题
    Java并发编程原理与实战二:并行&并发&多线程的理解
    ConcurrentHashMap 产生NullPointerException
    Java并发编程原理与实战一:聊聊并发
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/15789247.html
Copyright © 2011-2022 走看看