文档章节

《Java编程思想》第四版读书笔记 第七章

一万
 一万
发布于 2016/05/11 16:03
字数 1392
阅读 79
收藏 4
点赞 2
评论 0

复用代码的两种方法:

1、组合,将对象的引用用于新类;

2、继承。

 

7.1

每一个非基本类型的对象都有一个toString()方法,而且当编译器需要一个String而却只有一个对象时,toString()方法将会被调用。

7.1的倒数第二段最后一句话不明白,查了一下英文原版,我觉得可以这么翻译:

如果没有在定义处初始化,将不能保证发送给对象的引用信息前(按作者前文所述,发送给对象的引用信息可以理解为我们常说的调用对象的方法)它会被初始化,这样将会造成运行时异常。

 

7.2

Java中可以为每个类都创建main()方法。即时一个程序中包含多个类,也只有命令行所调用的那个类的main()方法会被调用。即时类Cleanser不是一个public类,如果命令行滴啊用java Cleanser,那么Cleanser.main()仍然会被调用。即使那个类只有包访问权限,其public main()仍然是可访问的。

在一个main内部还可以显示的调用另一个类的main。

当创建了一个导出类的对象时,该类包含了一个基类的子对象。这个子对象与用基类直接创建的对象是一样的。二者的区别在于后者来自于外部,而基类的子对象被包装在导出类对象内部。

练习5是想告诉我们,导出类中如果在定义处初始化的对象,他们执行的顺序是:

基类的构造函数——导出类中定义处初始化的对象——导出类的构造函数。

经过编程测试,这个顺序无论导出类有无默认构造函数,构造函数中是否显示调用super()都成立。

7.4

如果基类拥有某个已经被多次重载的方法名称,导出类中另外定义一个重载的版本并不会屏蔽在基类中的任何版本(这种特性与C++不同)。因此,无论在该层或者它的基类中对方法进行定义,重载机制都可以正常工作。

这种机制可能是会代码变得混乱,从1.5开始增加了@Override注解。当要覆写某个方法时,可以选择添加这个注解,在不留心重载而不是覆写了这个方法,编译器就会报错。简言之,@Override注解可以防止在不想重载时意外的进行了重载。

 

7.7

作者认为,虽然继承在OOP编程中占用重要的位置,但是应该谨慎使用。到底是使用组合还是继承,一个最清晰的判断方法是想一想是否需要从新类向基类进行向上转型。如果必须向上转型,则继承是必要的;但如果不需要,应当好好考虑是否需要继承。

练习17在给我们预习多态的概念,虽然函数函数是基类的引用,但是函数体内是实参(导出类)的方法被调用,而不是基类的。

7.8

使用到final有三种情况:数据、方法和类。

final数据:

final用于基本类型则定义了该类型的一个常量;用于对象,表示该对象的引用恒定不变(而改对象的属性是可以更改的)。

文中说:“在对这个常量进行定义的时候,必须对其进行赋值。”这句话不能理解为必须在定义处赋值,经过编程验证,对于static final可以在static语句块中对其进行赋值,而对于final可以在构造函数中进行赋值。也许作者想表达的意思是定义了常量,就必须在某处进行赋值。

一个既是static又是final的字段只占据一段不能改变的存储空间。带有恒定初值的final static基本类型全用大写字母命名,并且字与字之间用下划线隔开。

我们不能因为某数据是final的就认为在编译时可以知道它的值。在运行时可使用随机生成的数值为其初始化。

在参数列表中以声明的方式将参数指明为final。这意味着无法在方法中更改参数引用所指向的对象,或者基本类型的值。这一特性主要用来想匿名内部类传递数据。

final方法:

使用final方法的主要原因是防止任何继承类覆盖这个方法。

在Java早起实现,使用final方法代表该函数内联,以便来提高代码效率。在Java 5/6中,不再需要使用final方法来进行优化了。

类中所有的private方法都隐式的指定为final的。因为无法取用private方法,所以也就无法覆盖它。

final类:

不能被继承。final类中的方法隐式的被指定为final的。

7.9

类加载发生于创建类的第一个对象或访问了static域或static方法之时。构造函数是隐式static的。因此更准确的说,类是在其任何static成员被访问时加载。所有的static对象和static代码段都会在加载时依定义类时的书写顺序依次初始化。

© 著作权归作者所有

共有 人打赏支持
一万
粉丝 28
博文 102
码字总数 173386
作品 0
朝阳
程序员
读书笔记之《Java并发编程的艺术》-并发编程基础

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
8
读书笔记之《Java并发编程的艺术》-并发编程容器和框架(重要)

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
1
读书笔记之《Java并发编程的艺术》-线程池和Executor的子孙们

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
1
读书笔记之《Java并发编程的艺术》-java中的锁

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
0
深入理解计算机系统读书笔记(1)漫游

通读深计第一章漫游 得出以下几条结论,概述之: 1.本书主要讲解计算机系统中的3个问题即,信息的表示、信息的存储、和信息的处理。 2.计算机系统中抽象概念的重要性,以及对抽象概念的诠释。...

WhiteLeibniz
2012/12/02
0
0
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
05/09
0
0
学好Java只需要做到这7点,年薪20W很简单~

大道至简,所以扎实有用的方法,其实都是很简单的,难在踏踏实实的执行过程。今天为大家介绍的就是Java学习的7个看起来非常简单的方法,快学起来吧。 为什么要学习java? Java是目前最流行的...

欧阳海阳
06/05
0
0
五本值得一读的超棒Java电子书(附下载)

http://www.itwaka.com/ 网络上有很多关于Java的免费电子书,但是大多数都是过时的或者是不准确的。这是说的Java免费电子书是我收藏中最好的五本,它们在使用 Java编程语言的人群中是出名的,...

itwaka
2011/06/27
0
0
从程序员走向java架构师的书籍推荐!

作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想...

欧阳海阳
07/16
0
0
《虚拟机并发编程》读书笔记(一)

出差北京,趁回杭州之前去了趟海淀,顺手带了本之前一直想买的虚拟机并发编程,虽然这本书在amazon中国上的评价一般,但看看总还是有些收获吧,可能那些说书一般的都是大神吧。书应该是刚上新...

Gaischen
2013/06/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
6
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部