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()
    运行结果:孙和女朋友陈一起吃饭
    
  • 相关阅读:
    html学习总结
    16--二叉树的镜像
    17-- 从上到下打印二叉树,按层打印。
    14--反转链表
    14--合并两个排序的链表
    15-- 输入两个二叉树A和B,判断B树是否包含于A树。
    13--输入一个整数数组,实现一个函数来调整数组中数字的顺序
    13--输出链表中倒数第k个节点,
    12--打印1到最大的N为数字。
    10--输入一个十进制的整数,转化为二进制,输出有多少个1
  • 原文地址:https://www.cnblogs.com/duoduoyichen/p/10376668.html
Copyright © 2011-2022 走看看