29162309《程序设计与数据结构》第六周学习总结
学号 20162309《程序设计与数据结构》第6周学习总结
教材学习内容总结
第八章讲到了类的三要素之一的继承,结合云班课的教学视频,对知识点有了较为清晰的理解。总结而言,在继承这一环节,分清子类和父类的关系,以及子类和父类之间的继承关系是一个重点也是难点,其中比较有代表性的一条方法就是使用super引用,这一点在程序8.6中有体现出来,super(numPages)命令即是对程序8.5中所定义的numPages进行引用,同时在程序开始时的命令public class Dictionary2 extends Book2也是明确了这一点,Dictionary2是从已有类中派生出的新类,这也是本章继承所要表达的含义。
教材学习中的问题和解决过程
-
问题1:
关于子类重写,包括重定义来自父类的方法,如果将方法重新定义了,那仍然属于继承吗,如程序8.7中的Advice类的重新定义,运用新的方法即得到完全不同的输出结果,那么是否可以理解为子类在父类的基础上,进行了更进一步地深入?这与继承这一节其他内容是否有一定的联系?同时重载和重写是否有一定的区别? -
问题1解决方案:
通过学习教材的有关内容以及在网上查阅相关资料,了解了方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。同时重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。而重写则是需要利用父类和子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖,是继承这一章节中重要的一个知识点。
-
...
代码调试中的问题和解决过程
-
问题1:PP8.1中,需要实例化驱动类,并让新类继承父类中的flip方法,关于驱动类的建立,教材中并没有详细的说明。
-
问题1解决方案:
在网上查阅了资料,驱动是指加入了jar包后,原本系统中没有的功能可以发挥作用,相当于插件。插入了新的类,在使用new之后就可以正常使用。
代码托管
(statistics.sh脚本的运行结果截图)
代码提交:
结对及互评
通过学习20162313苑洪铭同学的博客,苑洪铭同学在对类层次的概念理解上比较下功夫,同时也有很好的掌握,在类层次方面,如果涉及多个类之间的从属关系,快速辨别各个类的层次关系,再对父类的修改,可以有效避免编译过程中出现错误和漏洞,同时也能更好的对继承关系进行系统的掌握。
- 基于评分标准,我给本博客打分:8分。
点评过的同学博客和代码
http://www.cnblogs.com/yuanhongming/
其他(感悟、思考等,可选)
在本周的学习中,java的继承是一个概念较多、内容较杂、体系较明确的知识点,在编译过程中同样有较为严格的语法和固有的编译结构。在编译的过程中,理解清楚类的层次关系以及从属关系,对于学好本节有着很大的帮助。
xxx
xxx
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第五周 | 200/200 | 1/1 | 20/20 | |
第六周 | 766/1000 | 1/1 | 18/38 | |
第七周 | 500/1000 | 1/1 | 22/60 | |
第八周 | 300/1300 | 1/1 | 30/90 |
-
计划学习时间:25小时
-
实际学习时间:27小时