• 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 = 0

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


    代码托管

    (statistics.sh脚本的运行结果截图)


    上周考试错题总结

    • 错题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/195 1/4 20/20 对代码产生了很大兴趣
    第二周 309/504 1/5 20/40 打字速度明显提升
    第三周 311/815 2/7 25/65
    第四周 474/1289 1/8 30/95 抗...抗压能力加强?
    第五周 260/1549 1/9 15/110 了解到预习的重要性
    第六周 358/1907 2/11 20/130 打字速度明显提升
    第七周 780/2687 2/13 15/145 学会使用JUnit
    第八周 2124/4811 2/10 15/160

    结对互评

    20172319唐才铭

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

    参考资料

  • 相关阅读:
    通过HOOK控制进程的创建
    进程退出前删除自身EXE
    Unicode(UTF&UCS)深度历险
    《12个有趣的C语言问答》评析2
    float的深入剖析
    UML六种关系
    socket1
    ios学习之常见问题记录
    栈和队列总结篇
    Entity Framework做IN查询
  • 原文地址:https://www.cnblogs.com/zhaoqianchen/p/8982310.html
Copyright © 2020-2023  润新知