20165202 2017-2018-2 《程序设计与数据结构》第4周学习总结
教材学习内容总结
Ch5
- 子类与父类
子类只能有一个父类。使用关键字extends
来定义一个类的子类:class 子类名 extends 父类名
。在类的声明中未使用extends关键字,默认是Object的子类。 - 子类的继承性
子类可以通过继承的方法来操作未继承的变量。 - 子类与对象
- 成员变量的的隐藏和方法重写
重写方法可以操作继承的变量、方法,也可以操作子类新声明的成员变量、方法。如果子类想要使用被隐藏的方法或者成员变量,需使用关键字super
。 - super关键字
使用命令super.成员变量
和super.方法
使用被隐藏的变量和方法。
使用super()
调用父类的构造方法 - final关键字
final
关键字可以修饰类、成员变量和方法中的局部变量。 - 对象的上转型对象
- 继承与多态
- abstract类与abstract方法
- 面向抽象编程
- 开-闭原则
Ch6
- 接口
书中P145介绍了使用关键字interface来定义一个接口
interface Printable { final int MAX=100; void add(); float sum(float x,float y); }
接口包含接口声明与接口体两部分 - 实现接口
类实现接口:在类声明中使用关键字implements来声明一或多个接口 - 接口回调
- 理解接口
- 接口与多态
- 接口参数
面向接口编程
教材学习中的问题和解决过程
- 问题1:阅读教材后还是不理解使用接口的意义
问题1解决方案:参考java 的接口到底起什么作用
类描述了一个实体,包括实体的状态,也包括实体可能发出的动作。
接口定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。
所以接口有点象一个规范、一个协议,是一个抽象的概念;而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。
从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。代码调试中的问题和解决过程
- 问题1:vim编辑器如何快速规范代码格式?
- 问题1解决方案:课上老师讲到了idea简单操作,其中就有快速规范代码格式这一项内容。下课之后我百度了以下,找到了快速调整vim代码格式的方法。
参考vim下的代码块对齐操作一文
操作如下:
命令模式下 gg(把关标定位到最上面),V(进入VISUAL模式),shift+g(选中整篇文本),然后=。即可完成代码格式规范。 问题2:5_10编译提示找不到符号
- 问题2解决方案:
People people = (People)monkey
子类名People的P未大写导致错误。 - 问题3:Pillar.java编译提示Geometry无法转换为boolean
- 问题3解决方案:
if(bottom==null)
为判断语句 缺少一个"="变为赋值语句导致错误。
- 问题4:6_4编译提示非法的表达式开始
- 问题4解决方案:
a,b,,result
b后多了一个,导致问题。 - 问题5:*不是抽象的,且未覆盖抽象方法
- 问题5解决方案:Average中拼写错误,无法引用方法CompurerAverage。
代码托管
上周考试错题总结
1.定义float x = 0.5f;double y = 0.5,则x == y结果为false
解答:0.5在float和double的范围内都可以使用二进制精确表示。
2.char str[] = " hello"是错误的初始化语句。
hello为string型。
3.short和Float都属于基本数据类型
Float是float提供的封装类,不是基本数据类型
4.课上测试总结参见补交博客 20165202 week4课下补做
感想
平时对照教材敲代码感觉没有遇到什么问题,但在考试中会暴露出问题。本周课上测试要求将求和代码和阶乘代码拼接实现一个程序就不知道如何操作了。对于老师给的学习知识点还是应该更多去理解,而不是机械的敲入电脑。随着学习的进行感觉每周自主学习任务较重,希望老师在课上讲解更多的内容结合例子具体分析,完全靠自主学习提高效率较为困难。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
第一周 | 24/24 | 1/4 | 15/15 |
第二周 | 423/423 | 2/6 | 14/29 |
第三周 | 702/1109 | 1/7 | 16/45 |
第四周 | 918/2027 | 2/9 | 16/61 |