• Python学习 :面向对象 -- 三大特性


    面向对象的三大特性

    一、封装

    把数据、值、变量放入到对象中

    构造方法 _init_方法

    特殊作用: 在 obj = 类名() 执行时: 内部自动执行两个步骤:

    1、创建对象

    2、通过对象执行类中的一个特殊方法(_init_方法)

    class info:
        def __init__(self,name,age):
            self.name = name
            self.age = age
            self.gender = '男'
        def show(self):
            print(self.name,self.age,self.gender)
    
    alex = info('alex',20)
    alex.show()
    mike = info('mike',23)
    mike.show()
    ===>alex 20 男
    ===>mike 23 男

    二、继承

    1、继承

       -- 子类继承父类,或称派生类继承基类

    class GrandFather:
        def plus(self):
            print("添加")
    
    class Father(GrandFather):     # 父类(基类)
        def add(self):
            print("增加")
        def delete(self):
            print("删除")
    
    class Son(Father):  # 子类(派生类)
        def get(self):
            pass
    
    s = Son()
    s.add()
    s.plus()
    ===>增加
    ===>添加

    2、重写

          -- 防止执行父类中的某些方法

    class Father:     # 父类(基类)
        def add(self):
            print("父类中的增加")
        def delete(self):
            print("父类中的删除")
    
    class Son(Father):  # 子类(派生类)
        def delete(self):
            print("子类中的删除")  # 默认不再执行父类中的方法
    
    s = Son()
    s.add()
    s.delete()  # 此时子类不再继承父类中的delete方法,而是调用子类自己的方法
    ===>父类中的增加
    ===>子类中的删除

    3、扩展

          -- 即执行父类中的方法,也执行子类自己的方法

    class RequestHandler:
        def get(self):
            print("父类中的获取")
    class BaseRequest(RequestHandler):
        def get(self):
            super(BaseRequest, self).get()  # 执行父类中的方法
            #RequestHandler.get(self) 与super方法效果一样,但更推荐使用euper方法
            print("子类中的获取")
    
    obj = BaseRequest()
    obj.get() # 此时方法会执行父类中的方法,再执行子类的方法
    ===>父类中的获取
    ===>子类中的获取

    4、多继承

          -- 子类会根据左侧优先原则,在第一个父类中寻找方法,在找不到的情况下在去父类的父类中寻找

          -- 当父类有同一个根时,根会在最后才执行

    class Base:
        def a(self):
            print('Base')
    
    class F0(Base):
        def a1(self):
            print('F0')
    
    class F1(F0):
        def a1(self):
            print('F1')
    
    class F2(Base):
        def a(self):
            print('F2')
    
    class S(F1,F2):
        pass
    
    obj = S()
    obj.a()
    ===> F2

    三、多态

      python 原生即为多态,不需要过多进行处理

  • 相关阅读:
    Java 标识符
    Java 关键字详解
    Java 语言的主要特性
    redis学习
    垃圾回收
    JVM内存结构
    sql总结(DML)
    sql总结(DDL)
    加密算法
    《数据结构》 定长顺序串常用操作代码集合
  • 原文地址:https://www.cnblogs.com/ArticleYeung/p/10444524.html
Copyright © 2020-2023  润新知