20172313 2017-2018-2 《程序设计与数据结构》第八周学习总结
教材学习内容总结
- 了解了在多态引用时的后绑定的概念。
- 学习练习如何利用继承方式来实现多态性。
- 学习练习如何利用接口来实现多态性。
- 初步学习算法,了解学习了两种对数组中的元素进行排序的方法。
- 了解学习了两种在一组元素中寻找一个指定的目标元素的方法。
- 初步学习判断什么时候使用多态性设计对问题进行解决,并体会利用多态性所带来的好处。
教材学习中的问题和解决过程
- 问题1:在刚刚开始学习利用接口实现多态性的时候感受很奇怪,由于在原来学习接口的时候的时候知道Java中的接口是一组常量和抽象方法的集合,接口不能被实例化。在看到树上的举例 Speak special() = new Philosopher();的时候感到很疑惑,不明白为何接口能够被实例化。
- 问题1解决方案:随着学习的深刻后,了解到这里并非对接口本身自己实例化,而是用于声明一个对象引用变量指向实现该接口的类的对象。
- 问题2:在学习对一组元素进行排序的时候有这样一段代码
public static void selectionSort(Comparable[] list) {
int min;
Comparable temp;
for (int index = 0; index < list.length - 1; index++) {
min = index;
for (int scan = index + 1; scan < list.length; scan++)
if (list[scan].compareTo(list[min]) < 0)
min = scan;
// Swap the values
temp = list[min];
list[min] = list[index];
list[index] = temp;
}
}
- 这里的temp是一个Comparable类的对象,不明白为何能够用list[min]对它进行赋值。
- 问题2解决方案:对书本上的知识继续学习并结合蓝墨云上的视频学习后,这里的list数组是一个形式参数,而在传入的实际参数数组中保存的是一个个Contact对象,这里是利用了多态使得对象引用变量指向其余的对象。
- 问题3:在开始学习二分搜索法的时候,看到书上给的示例,就想到若是待搜索的元素个数为偶数的话,就会有两个中点值,那么这个时候要怎么取中点?虽然书上后面也进行了解释,不是很理解书上想要表达的意思。
- 问题3解决方案:王老师在上课的时候对该问题进行了解答,由于是取中点,因此对两个数取平均值在进行类型转换转换为int行,这时候小数部分就被忽略掉了,这也就是书上所说的取两个中点的第一个为新的中点。
代码调试中的问题和解决过程

上周考试错题总结
- 错题1: Inheritance through an extended (derived) class supports which of the following concepts?
A . interfaces
B . modulary
C . information hiding
D . code reuse
E . correctness
- 解析 经过扩展一个类并继承它,新类没必要从新实现任何这些继承的方法或实例数据,从而节省了程序员的工做量。 所以,代码重用是为了您的须要扩展它而重用其余代码的好处。
- 缘由 呃...未理解好题目所想要表达的意思。
- 错题2: Which of the following is an example of multiple inheritance?
A . A computer can be a mainframe or a PC
B . A PC can be a desktop or a laptop
C . A laptop is both a PC and a portable device
D . A portable device is a lightweight device
E . Macintosh and IBM PC are both types of PCs
- 解析 多重继承意味着一个给定的类继承了多个父类。 在上面列出的那些选项中,笔记本电脑继承了来自PC和便携式设备的特性。 A,B和E中的答案都是单个继承的例子,其中一个类至少有两个子类(在A中,计算机有儿童大型机和PC,B,PC有儿童台式机和笔记本电脑,E,PC有孩子Macintosh 和IBM PC)。 答案D表示一个类的属性。
- 缘由 对继承的概念理解混淆不清。
- 错题3: A variable declared to be of one class can later reference an extended class of that class. This variable is known as
A . protected
B . derivable
C . cloneable
D . polymorphic
E . none of the above, a variable declared to be of one class can never reference any other type of class, even an extended class
- 解析 多态意味着变量能够有多种形式。 在普通状况下,Java被强烈定义,即一旦声明为某个类型的变量永远不会变为不一样的类型。 这是一个例外,多态变量能够是任何类型的派生类(尽管不是同时,变量能够从一种类型变为另外一种类型)。
- 缘由 我觉得这道题是想问变量前面要声明为何类型,没有理解题意。
- 错题4: If you instantiate an Abstract class, the class or object you wind up with
A . is also an Abstract class
B . is a normal class
C . is an Interface
D . is a reference to an Object
E . can't exist you cannot instantiate an Abstract class
- 解析 你只能实例化具体类而不是抽象类。 可是你能够扩展抽象类和接口。
- 缘由 我把提意理解成写抽象类的子类的类型是什么...(英语很差是硬伤)
结对及互评
- 博客中值得学习的或问题:
- 代码中值得学习的或问题:
点评过的同窗博客和代码
其余
感受这周的学习任务相较与上周又有了必定的提高,学起起来也更困难,但同时也是我更加意识到Java的学习是经过不断的亲身实践和练习才能不断提升的,书本上的内容和老师上课所讲的不过是理论而已,只能辅助你学习,不能彻底依赖上课听讲,死啃书本。同时,在这周的测试中我也意识到了一个问题,不少题目的错误都是因为我对题目的翻译不到位致使理解错了题意因此致使了错误,但愿在之后的学习生活中能继续不断提升本身的英语能力。也但愿本身能在之后经过努力不断进步!编程
学习进度条
目标 |
5000行 |
30篇 |
400小时 |
|
第一周 |
126 |
1/1 |
20/20 |
|
第二周 |
388/466 |
1/2 |
15/35 |
|
第三周 |
706/1162 |
1/3 |
17/52 |
|
第四周 |
1104/2266 |
1/4 |
20/72 |
|
第五周 |
1126/3392 |
1/5 |
15/87 |
|
第六周 |
906/4298 |
1/6 |
20/107 |
|
第七周 |
1233/5531 |
1/7 |
20/127 |
|
第八周 |
1391/6922 |
1/8 |
24/151 |
|
参考资料