20172316 2017-2018-2《程序设计与数据结构》第八周学习总结

20172316 2017-2018-2《程序设计与数据结构》第八周学习总结

教材学习内容总结

  • 本章的核心词是多态性
  • 开篇介绍了绑定,特别是后绑定。绑定就是将方法名和执行的对象对应起来,从而区别同一方法在不同对象上的应用。前(静态)绑定是编程时早已确定好的,绑定效率高。后(动态)绑定效率低,但胜在灵活,本章要用到的绑定方式就是后绑定。
  • 多态性,我理解的就是同一方法可以作用于不同的类的性质。
  • 实现多态性有两种方式:继承、接口。
    由继承产生的多态性我们已经见识过了,ArrayList在未规定元素类型之前可以存储任何一类的对象,因为所有的类都是Object类的子类。书中例子move()是一个方法,引用变量Animal creature = new Horse指向Horse后(Horse是Animal子类),creature.move()就调用Horse中的move()方法。
    利用接口实现多态性也很方便,感觉和继承中的抽象类实现多态性十分相似。接口可以继承接口、类可以继承接口,但接口不能继承类。
  • 排序,书中有两种排序:选择法排序、插入法排序,排序的基础是Comparable接口的实现。通过比较“大小”对对象进行有序的排列。签证所执行的交换操作次数少,优于插入法。
  • 搜索,书中提供两个搜索:线性搜索、二分搜索,二分搜索效率较高,但前提是搜索池已经过排序。

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

本周教材学习中无重大问题,老师和助教解答很详细。


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

  • 问题1:想要尝试一下继承实现多态,基本思路为Demo类中i = 4,SuperDemo类中i = 7,最后输出结果应该是SuperDemo类中的7,结果却是SuperDemo = 01334032-20180502203405932-12638967.png
    1334032-20180502203353317-1446239093.png

  • 问题1解决方案:查找网上类似的问题,得到一点启发。执行new SuperDemo()的时候先调用了父类的Demo(),而该构造里边又引用了子类的show方法,但那时候子类构造还未执行,i变量仅仅被分配了内存并赋予默认的0,所以打印的是0。应该是这样。


代码托管

(statistics.sh脚本的运行结果截图)1334032-20180502203523934-1176659648.png


上周考试错题总结

  • 错题1: Which of the following is true regarding Java classes?
    正确答案:A .All classes must have 1 parent but may have any number of children (derived or extended) classes
    原因:每一个类都直接或者间接的是Object类的子类。

  • 错题2:A variable declared to be of one class can later reference an extended class of that class. This variable is known as
    正确答案:D .polymorphic
    原因:没有很好的理解题目意思,以为是“一个类中的变量可以被自己的子类引用”之类的,从而误选为protected。

  • 错题3:In order to determine the type that a polymorphic variable refers to, the decision is made
    正确答案:D .by the Java run-time environment at run time
    原因:多态性引用的类型判断是在程序运行时,也就是动态绑定。

  • 错题4:Using the reserved word, super, one can
    正确答案:E .none of the above
    原因:super保留字既能引用构造函数,也能引用方法和数据。

  • 错题5:If class AParentClass has a protected instance data x, and AChildClass is a derived class of AParentClass, then AChildClass can access x but can not redefine x to be a different type.
    正确答案:B .false
    原因:这是可以实现的,通过保留字super的使用。


学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周195/1951/420/20对代码产生了很大兴趣
第二周309/5041/520/40打字速度明显提升
第三周311/8152/725/65
第四周474/12891/830/95抗...抗压能力加强?
第五周260/15491/915/110了解到预习的重要性
第六周358/19072/1120/130打字速度明显提升
第七周780/26872/1315/145学会使用JUnit
第八周2124/48112/1015/160

结对互评

20172319唐才铭

  • “向上转型与向下转型”不是教材学习中的问题,而是测验中的问题,不过总结得很好;
  • PP10.4输出结果可以更整齐。
    20172329王文彬
  • 对于参考材料的引用直接使用截图可能不是一个好的选择。

参考资料

转载于:https://www.cnblogs.com/zhaoqianchen/p/8982310.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值