zoukankan      html  css  js  c++  java
  • 面向对象(一) 类与类之间的关系之依赖和关联

    面向对象的三种关系:

    1.依赖关系

    A类(A类实例化对象)依赖B类(B类实例化对象)的意思就是B类实例化的对象名作为参数传递给A类(对象)的方法,那么在A类对象就可以用B类实例化对象的方法

    1)  植物大战僵尸简易版

    # 植物大战僵尸简易版
    class ZhiWu:#创建植物类
        def __init__(self,name,hp,attack):#初始化属性
            self.name=name
            self.hp=hp
            self.attack=attack
        def da(self,js):
            js.hp-=self.attack
    
    class JiangShi:#创建僵尸类
        def __init__(self,name,hp,attack):#初始化属性
            self.name=name
            self.hp=hp
            self.attack=attack
        def eat(self,zw):
            zw.hp -= self.attack
    # 创建僵尸和植物对象
    zw=ZhiWu("紫罗兰",20,10)
    js=JiangShi("躺尸",30,5)
    # 植物攻击一次
    zw.da(js)
    print(js.hp)#20
    # 僵尸攻击一次
    js.eat(zw)
    print(zw.hp)#15
    

     2) 大象关冰箱

    class Elephant:
    
        def __init__(self, name):
            self.name = name
    
        def open(self, ref):
            print('冰箱开门吧')
            ref.open_door()
    
        def close(self, ref):
            print('冰箱关门吧')
            ref.close_door()
    
        def get_in(self):
            print('进冰箱装自己')
    
    class Refrigerator:
    
        def open_door(self):
            print('冰箱默默地打开了自己的门')
    
        def close_door(self):
            print('冰箱默默地关上了自己的门')
    
    
    
    e = Elephant('小象')
    ref1 = Refrigerator()
    
    #大象进冰箱
    e.open(ref1)
    e.get_in()
    e.close(ref1)
    

    2.关联关系,又叫组合,聚合关系

    A类和B类关联意思是B类对象作为参数传递给A中并且封装成了A对象的一个属性

    1) 男朋友女朋友

    class Boy():
        def __init__(self,name,girlfirend = None):
            self.name = name
            self.girlfriend = girlfirend
        def have_dinner(self):
            if self.girlfriend:
                print("%s和女朋友%s一起吃饭"%(self.name,self.girlfriend.name))
            else:
                print("自己吃饭")
    
    class Girl():
        def __init__(self,name):
            self.name = name
    Shawn = Boy("孙")
    Chen = Girl("陈")
    Shawn.have_dinner()
    运行结果:自己吃饭
    Shawn.girlfriend = Chen
    Shawn.have_dinner()
    运行结果:孙和女朋友陈一起吃饭
    
  • 相关阅读:
    ACTION 的跳转与参数传递
    action 与 action 之间的跳转
    图片不存在时,显示一个默认的图片 (自己理解)
    java 防止表单重复提交(serlvet)
    java防止表单重复提交
    了解 Windows Azure 存储计费 – 带宽、事务和容量
    微软开放技术热烈祝贺开源社成立!
    “开源社”(开源联盟)成立
    Azure SQL 数据库的灵活缩放预览版简介
    通过 PowerShell 支持 Azure Traffic Manager 外部端点和权重轮询机制
  • 原文地址:https://www.cnblogs.com/duoduoyichen/p/10376668.html
Copyright © 2011-2022 走看看