- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
day07-总结
总结问题(一)
1、类与类之间的关系
一、继承关系继承指的是一个类(称为子类、子接口)继承另外的一
个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。
二、实现关系实现指的是一个class类实现interface接口(可以是多
个)的功能,实现是类与接口之间最常见的关系。
三、依赖关系简单的理解,依赖就是一个类 A使用到了另一个类B,
而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化
会影响到类A。比如某人要过河,需要借用一条船,此时人与船之间的关
系就是依赖。表现在代码层面,为类B作为参数被类A在某个method方
法中使用。
四、关联关系关联体现的是两个类之间语义级别的一种强依赖关系,
比如我和我的朋友,这 种关系比依赖更强、不存在依赖关系的偶然性、关
系也不是临时性的,一般是长 期性的,而且双方的关系一般是平等的。关
联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式
出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全
局变量。
五、聚合关系聚合是关联关系的一种特例,它体现的是整体与部分
的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具
有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象
共享。比如计算机与CPU、公司与员工的关系等,比如一个航母编队包括
海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面,
和关联关系是一致的,只能从语义级别来区分。
六、组合关系组合也是关联关系的一种特例,它体现的是一种
contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体
与部分间的关系,但此时整体与 部分是不可分的,整体的生命周期结束也
就意味着部分的生命周期结束,比如人 和人的大脑。表现在代码层面,和
关联关系是一致的,只能从语义级别来区分。
七、总结对于继承、实现这两种关系没多少疑问,它们体现的是一种
类和类、或者类与接口间的纵向关系。 其他的四种关系体现的是类和类、
或者类与接口间的引用、 横向关系,是比较难区分的,有很多事物间的关
系要想准确定位是很难的。前面也提到,这四种关系都是语义级别的, 所
以从代码层面并不能完全区分各种关系, 但总的来说,后几种关系所表现
的强弱程度依次为:组合聚合关联依赖。
2、java 内存的分布
1. 寄存器 我们在程序中无法控制
2. 栈 存放基本类型的变量数据,局部变量,和对象的引用,但
对象本身不存放在栈中,而是存放在堆(new出来的对象)或者常量池中
(字符串常量对象存放在常量池中。)
3. 堆 存放用 new 产生的对象,数组。为了给垃圾回收器使用,
堆主要分成三个区域,分别叫作 NewGeneration,OldGeneration 或叫
TenuredGeneration,以及 Permspace。NewGeneration 是用来存放新建的
对象的空间,在对象新建的时候被使用。如果长时间还使用的话,它们会
被垃圾回收器移动到 OldGeneration(或叫 TenuredGeneration)。Permspace
是 JVM 存放 Meta 数据的地方,例如类,方法,字符串池和类级别的详细
信息。
4. 静态域 存放在对象中用 static 定义的静态成员
5. 常量池 存放字符串常量和基本类型常量(publicstaticfinal)。
3、开发中我们主要关心栈,堆和常量池
栈:
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的
栈内存中分配。
当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存
空间,当超过变量的作用域后,Java 会自动释放掉为该变量所分配的内存
空间,该内存空间可以立即被另作他用。存取速度快,仅次于寄存器。
栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,
这个数据就会消失,
引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到
其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序运行到
使用new产生数组或者对象的语句所在的代码块之外,数组和对象本身占
据的内存不会被释放,数组和对象在没有引用变量指向它的时候,才变为
垃圾,不能在被使用,但仍然占据内存空间不放,在随后的一个不确定的
时间被垃圾回收器收走(释放掉)。
原创力文档


文档评论(0)