zoukankan      html  css  js  c++  java
  • day15 面向对象1

    今日主要内容
    1. 面向对象和面向过程
    面向过程: 以我为中心. 按照事物的发展"流程".
        优点:流程化,编写简单 缺点: 可拓展性差

    面向对象: 以对象为中心. 具有相同属性和动作的结合体叫对象
         优点: 可拓展性强 缺点: 编程复杂度高于面向过程
    万事万物皆为对象(object)

    2. 如何编写面向对象的程序(重点)
    先创建类: 归类. 对某些事物进行总结. 相当于图纸
    使用类可以创建对象:
    class 类名(object) (类名首字母大写)
    def __init__(self, name, age): # 构造方法. 创建对象的时候自动调用这个方法
    self.name = name
    self.age = age

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

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

    # 访问对象的属性信息
    对象.属性 print(c.self)

    # 方法的访问:
    对象.方法()  c.func()

    对比面向对象和面向过程:
    看需求.
    大型项目更适合用面向对象
    小型脚本程序更适合面向过程

    3. 面向对象的三大特征: 封装, 继承, 多态
    1. 封装
    对属性封装
    self.xxx = xxxx
    对方法封装
              def xxx(self)

    2. 继承
    子类可以自动拥有父类中除了私有内容外的其他所有内容
        单继承:
    class Niu:
        def da(self):
            print("牛魔王打架很厉害")
    
    class HongHaiEer(Niu)  # 单继承  
        def da(self):
            print("喷火")
    
    hhl = HongHaiEer()
    hhl.da()
    
    子类在父类的基础上扩展了一些功能是派生
    View Code

            多继承:

    class Foo1:
        def money(self):
            print("有钱")
    
    class Foo2:
        def play(self):
            print("玩儿")
    
        def money(self):
            print("没钱")
    
    class Bar(Foo2, Foo1): # MRO c3算法
        pass
    
    b = Bar()
    b.money()
    View Code

    3. 多态
    同一个对象多种形态.
    class YaoGuai:
        def teng(self):
            print("妖怪一定疼")
    class Zhizhujing(YaoGuai):
        def teng(self):
            print("蜘蛛精很痛")
    class Heixiongjing(YaoGuai):
        def teng(self):
            print("黑熊精很痛")
    class Baigujing(YaoGuai):
        def teng(self):
            print("白骨精很疼")
    
    class Jinjiaodawang(YaoGuai):
        def tebieteng(self):      #子类可以继承父类的方法
            print("爆炸的疼")
    class Sunwukong:
        def da(self, yg):
            yg.teng()
    swk = Sunwukong()
    
    hxj = Heixiongjing()
    swk.da(hxj)     #黑熊精很痛
    
    bgj = Baigujing()
    swk.da(bgj)     #白骨精很疼
    
    zzj = Zhizhujing()
    swk.da(zzj)     #蜘蛛精很痛
    
    alex = Jinjiaodawang()
    swk.da(alex)    #妖怪一定疼  调用父类的方法
    View Code
    
    
    
    
    
  • 相关阅读:
    Vector用法。
    error LNK2001的解决方法
    指针(详解)
    xxx cannot be resolved to a type
    springmvc写了方法无法访问
    java lombok包在maven已经配置,但是注解没用
    系统提供的相关intent
    Activity小结
    BrocastReceiver入门
    AppWidget入门
  • 原文地址:https://www.cnblogs.com/Knight-huang/p/9917500.html
Copyright © 2011-2022 走看看