学号 2016-2017-2 《Java程序设计》第四周学习总结

教材学习内容总结

  • 继承:避免多各类间重复定义行为,extends关键字表示继承后再扩充原本没有的行为。如果没有使用extends关键字指定继承任何类,则比为继承java.lang.Object。

  • 子类与父类之间,是“is a”的关系,即子类是一种父类。

  • 多态就是使用单一接口操作多种类型的对象。

  • 重新定义:定义与父类中相同的方法部署,但执行内容不同。重新定义方法时,对于父类中的方法权限,只能扩大但不能缩小。

  • 如果某方法区块中真的没有任何程序代码操作,可以使用abstract将该方法标示为抽象方法。内含抽象方法的类,一定要在class前标示abstract,它标示这是一个定义不完整的抽象类。

  • 在类内部,关键字public,protected,private和无关键字都可存取;相同包类中,关键字public,protected和private可存取,无关键字不可存取;在不同包类之间,public关键字可存取,protected子类可存取,private和无关键字不可存取。

  • 如果想取得父类中的方法定义,可以在调用方法前,加上super关键字。

  • final限定用在声明变量时,如果后续撰写程序时自己或别人不经意想修改final变量,就会出现编译错误;而如果用在class前定义时,表示这个类是最后一个了,不会再有子类(即不能被继承)。

  • interface关键字用于定义行为,而implements关键字用于类操作接口。

  • 与继承的“是一种”关系不同,操作接口表示“拥有行为”。

  • 类可以同时继承某个类,并操作某些接口。

教材学习中的问题和解决过程

  • 问题1:在看第六章前面时,教材代码中常出现format,不太明白他的意思。

  • 解决方案1:去百度查阅了一下format的用法,阅读了《java中的String.format使用》

代码调试中的问题和解决过程

  • 问题1:在运行教材162页的RPG程序时,编译后显示如下:

  • 解决方案1:看了错误提示信息,揣测是Role程序中的问题,点开Role后发现是编写setBlood时未写形式参数,后来补充上了:

  • 问题2:书上许多程序中出现了@ Override,看了169页的解释,依然不太理解。

  • 解决方案2:询问了同学后,在原代码上加上了@Override,如图,出现了以下标志:

代码托管

运行statistics脚本截图:

上周考试错题总结

  • System.out.println(“”+52+25);的结果是(5225)。错题原因:对println了解不深刻,引号后的加号是直接将内容贴上去,无需计算。

  • p86 命令行下编译Guess.java的命令是(javac -d . Guess.java)。错题原因:没有写-d,忽略了是将.class文件放在指定目录下。

  • p109 Average.java 求1,2,3,4,5的平均值的命令是(java cc.openhome.Average 1 2 3 4 5。错题原因:忘了写cc.openhome.目录。

其他(感悟、思考等,可选)

这周虽比起上周的仓促好了一些,但离每天敲代码还有些距离。学以致用,也须以用补学。希望自己再接再厉吧:)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 8/8 1/1 20/20
第二周 164/172 1/2 25/45
第三周 248/420 1/3 25/70
第四周 465/885 1/4 25/95

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料