---恢复内容开始---

一  依赖关系(最轻的一种关系,在方法中引入另一个类的对象)

class Elephant:
def __init__(self,name):
self.name=name
def open(self,ab): # 依赖关系
print("冰箱哥哥%s开门" % self.name) # 想要一个冰箱,是哪个冰箱没有指定
# print(self)
ab.open_door() # 引入另一个变量 ab.为引入方式
# 由外界传递进来⼀个冰箱, 让冰箱开⻔. 这时. ⼤象不⽤背着冰箱到处跑.
# 类与类之间的关系也就不那么的紧密了. 换句话说. 只要是有open_door()⽅法的对 象. 都可以接收运⾏
def jin(self):
print("我进冰箱了")
def close(self,ab):
print("冰箱哥哥关门")
ab.close_door()
class bingxaing:
def open_door(self):
print("冰箱自己打开们")
# print(self)
def close_door(self):
print("冰箱自己关上了门") alex=Elephant("离散") #大象的名字属性
bx=bingxaing() #创建冰箱对像
alex.open(bx) #调用创建的对象 注意. 此时是把⼀个冰箱作为参数传递进去了. 也就是说. ⼤象可以指定任何⼀个 冰箱
alex.jin()
alex.close(bx)

⼤象和冰箱之间就是依赖关系. 我⽤着你. 但是你不属于我. 这种关系是最弱的.

二 关联关系, 组合关系,聚合关系

这三个代码在写法上是一样的,但是,从含义上是不一样

1 关联关系 : 两种食物必须是互相关联的,但是在某些特殊情况下是可以更改和更换的

2 聚合关系.

属于关联关系中的⼀一种特例例. 侧重点是xxx和xxx聚合成xxx. 各⾃自有各⾃自的
声明周期. 比如电脑. 电脑⾥里里有CPU, 硬盘, 内存等等. 电脑挂了了. CPU还是好的. 还是
完整的个体

3 组合关系:

属于关联关系中的⼀一种特例例. 写法上差不多. 组合关系比聚合还要紧密. 比
如⼈人的⼤大脑, ⼼心脏, 各个器官. 这些器官组合成⼀一个⼈人. 这时. ⼈人如果挂了了. 其他的东⻄西
也跟着挂了了.

先看看关联关系的例子

class boy:
def __init__(self,name,xingge,girFriend=None):
self.name=name
self.xingge=xingge
self.girFriend=girFriend
def yujian(self,girl):
self.girFriend=girl
def chi(self):
if self.girFriend:
print("随便吃 %s和%s" % (self.name,self.girFriend.name))
else:
print("单身狗,吃什么吃")
class girl:
def __init__(self,name):
self.name = name
def chi(self):
print("%s在吃饭" % self.name) girl = girl("撒旦")
boy=boy("李二","急撒") boy.chi() # 结果 :单身狗,吃什么吃 boy.yujian(girl)
boy.chi() # 结果 : 随便吃 李二和撒旦 # boy.girFriend.name # 找到他的女友
# boy.girFriend.chi()

例子二:

class School:
def __init__(self, name, address, phone):
self.name = name
self.address = address
self.phone = phone
self.__teach_list = [] def zhaopin(self, t):
self.__teach_list.append(t) def display(self):
for el in self.__teach_list:
print(el.name, el.hobby) class Teacher:
def __init__(self, name, gender, salary, hobby, school):
self.name = name
self.gender = gender
self.salary = salary
self.hobby = hobby self.school = school oldboy_bj = School("北京老男孩", "美丽富饶的沙河", "")
oldboy_sh = School("北京老男孩, 上海分校", "上海浦东", "")
oldboy_sz = School("北京老男孩, 深圳分校(骑士计划)", "南山区", "") t1 = Teacher("配齐", "男", , "上课", oldboy_bj)
t2 = Teacher("太白", "男", , "开车", oldboy_bj)
t3 = Teacher("Eggon", "男", , "钻研技术", oldboy_sh)
t4 = Teacher("高鑫", "女", , "相夫教子", oldboy_sz)
t5 = Teacher("日天", "男", , "看天", oldboy_sz) # print(t3.school.address) # 找到老师所在的学校的地址 oldboy_bj.zhaopin(t1)
oldboy_bj.zhaopin(t2)
oldboy_bj.display() oldboy_sh.zhaopin(t3) oldboy_sz.zhaopin(t4)
oldboy_sz.zhaopin(t5) oldboy_sz.display()

三 继承关系

子类在不影响⽗类的程序运行的基础上对父类进行的扩充和扩展. 这里.我们可以把父类被称为超类或

者基类. 子类被称为派生类

day 016 面向对象---类与类的关系的更多相关文章

  1. C++面向对象高级编程(五)类与类之间的关系

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 本节主要介绍一下类与类之间的关系,也就是面向对象编程先介绍两个术语 Object Oriented Programming   OOP面向对象编 ...

  2. python 面向对象类与类之间的关系

    主要内容: 1. 依赖关系 2. 关联关系, 组合关系, 聚合关系 3. 继承关系 4. 类中的特殊成员 引子 大千世界, 万物之间皆有规则和规律,我们的类和对象是对大千世界中的所有事物进行归类. 那 ...

  3. Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员、局部),匿名对象的调用,构造代码块(5)

    Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员.局部),匿名对象的帝爱用,构造代码块(5)

  4. Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...

  5. python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系

    https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...

  6. JAVA面向对象-----接口与类、接口之间的关系

    接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...

  7. 2.java面向对象类与类/类与对象之间关系详解

    继承.实现.依赖.关联.聚合.组合的联系与区别 下面的内容很基础,同时也很简单,但是也很重要. 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功 ...

  8. python学习笔记:第17天 面向对象03 类与类之间的关系

    一.类与类之间的依赖关系 ⼤千世界, 万物之间皆有规则和规律. 我们的类和对象是对⼤千世界中的所有事物进⾏归类. 那事物之间存在着相对应的关系. 类与类之间也同样如此. 在⾯向对象的世界中. 类与类 ...

  9. day20 Pyhton学习 面向对象-类与类之间的关系

    一.类与类之间的依赖关系 class Elphant: def __init__(self, name): self.name = name def open(self, ref): print(&q ...

随机推荐

  1. 命令创建Vue

    创建vue+webpack vue init webpack projectName 基础 Vue+webpack+Vux 新建文件命令 # install vue-cli npm install - ...

  2. zabbix3.4.7表结构

    zabbix数据库表结构的重要性 想理解zabbix的前端代码.做深入的二次开发,甚至的调优,那就不能不了解数据库的表结构了. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  3. ubuntu中更新.netcore到2.1版本

    如果需要安装新版本到dotnetcore,需要先卸载旧版本(https://github.com/dotnet/core/blob/master/release-notes/download-arch ...

  4. SpringMVC:后台将List转为Json,传值到页面

    一.JSP页面 <body> <form name="test" action="getAllStudent" method="po ...

  5. Android知识补充(Android学习笔记)

    Android知识补充 ●国际化 所谓的国际化,就是指软件在开发时就应该具备支持多种语言和地区的功能,也就是说开发的软件能同时应对不同国家和地区的用户访问,并针对不同国家和地区的用户,提供相应的.符合 ...

  6. Linux3.10.0块IO子系统流程(4)-- 为请求构造SCSI命令

    首先来看scsi_prep_fn int scsi_prep_fn(struct request_queue *q, struct request *req) { struct scsi_device ...

  7. Express工作原理和源码分析一:创建路由

    Express是一基于Node的一个框架,用来快速创建Web服务的一个工具,为什么要使用Express呢,因为创建Web服务如果从Node开始有很多繁琐的工作要做,而Express为你解放了很多工作, ...

  8. 5.10 C++内存管理操作符重载

    参考:http://www.weixueyuan.net/view/6388.html 注意: 内存管理操作符new.new[].delete和delete[]同样也可以进行操作符重载,其重载形式既可 ...

  9. 乘法“*”和点乘“.*”&除法“/”和点除“./”区别

    reference:https://blog.csdn.net/xiaotao_1/article/details/79026406 一,*和.*的联系和区别.  1,在进行数值运行和数值乘矩阵,这两 ...

  10. Oracle 定时器

    我的代码 declare job number; begin dbms_job.submit( JOB=>job, what=>'addBytime;',// 这里要写分号,不然容易出错. ...