• Day-14 初识面向对象


    一、面向对象和面向过程

      1.面向过程:一切以事物的流程为核心,核心是“过程”二字(流水线),是一种机械式的编程思维

        优点:负责的问题流程化,编写相对简单

        缺点:可扩展性差

      2.面向对象:一切以对象为中心

        优点:可扩展性强

        缺点:编程的复杂度高于面向过程 

      万事万物皆为对象

    二、面向对象如何编写

      使用类可以创建对象:
      class 类名(object):
        def __init__(self, name, age): # 构造方法. 创建对象的时候自动调用这个方法
          self.name = name
          self.age = age

        def 方法名(self, 参数):
          方法体(return)

      创建对象:
        变量(引用, 句柄) = 类名(参数)

        # 访问对象的属性信息
        对象.属性
        # 方法的访问:
        对象.方法()

    class Car:
        def __init__(self, color, pai, pailiang):    # self表示当前类的对象. 当前你创建的是谁, 谁来访问的这个方法.那这个self就是谁.
            self.color = color
            self.pai = pai
            self.pailiang = pailiang
         def run(self, speed):
             print("⻋可以跑%s迈" % speed)
    
    c = Car("red", "京A66666", "2.0T")
    c.run(100)  # 这时. python会自动把对象c传递给run方法的第一个参数位置. 

      总结: 类与对象的关系: 类是对事物的总结. 抽象的概念. 类用来描述对象. 对象是类的实例
    化的结果. 对象能执行哪些方法. 都由类来决定. 类中定义了什么. 对象就拥有什么

      对比面向对象和面向过程:

        看需求

        大型项目更适合用面向对象

        小型脚本程序更适合面向过程

    三、面向对象的三大特征

      面向对象三大特征:封装,继承,多态,只要是面向对象编程语言,都有这三个特征

      1.封装

        对属性封装:self.xxx = xxxx

        对方法封装

      2.继承

        子类可以自动拥有父亲中除了私有内容外的其他所有内容

    class Yao:
    
        def chi(self):
            print("我是妖怪, 我天生就会吃人")
    
    class BaiGuJing(Yao): # 白骨精继承妖怪
        pass
    
    bgj = BaiGuJing()
    bgj.chi()   # 我是妖怪, 我天生就会吃人 # 虽然白骨精类中没有编写chi. 但是他爹有啊. 直接拿来用

        多继承

    class QinDie:
        def chi(self):
            print("亲爹给你好吃的")
        def play(self):
            print("亲爹会陪你玩")
    
    class GanDie:
        def qian(self):
            print("干爹给钱啊")
        def play(self):
            print("干爹会陪你玩")
    
    class GuNiang(QinDie, GanDie):
        pass
    
    bumei = GuNiang()
    bumei.chi() # 亲爹
    bumei.qian() # 亲爹没有, 找干爹
    bumei.play() # 亲爹有了, 就不找干爹了

      3.多态

        同一个对象对重形态

    class Animal:
        def chi(self):
            print("动物就知道吃")
    class Pig(Animal):
        def chi(self):
            print("猪在吃")
    class Haski(Animal):
        def chi(self):
            print("哈士奇在吃")
    class Alasika(Animal):
        def chi(self):
            print("阿拉斯加在吃")
     
    class SiYangYuan:
        def yanng_animal(self, ani):
            ani.chi()
     
    zhu = Pig()
    erha = Haski()
    ala = Alasika()
    
    alex = SiYangYuan()
    alex.yanng_animal(zhu)
    alex.yanng_animal(erha)
    alex.yanng_animal(ala)
  • 相关阅读:
    System.IO.StreamWriter
    C# XML
    C# 泛型
    ACM将一个十进制的数转换为一个十六进制的数输出
    ACM打扫花园问题
    ACM用N个正方体来建造金字塔问可以建造多少层
    输入一串数字找出其中缺少的最小的两个数
    高效算法——B 抄书 copying books,uva714
    暴力求解——POJ 3134Power Calculus
    暴力求解——打表,暴力
  • 原文地址:https://www.cnblogs.com/xiaomai-rhce/p/10550743.html
Copyright © 2020-2023  润新知