day07-总结.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档