20182308 2019-2020-1 《数据结构与面向对象程序设计》第5周学习总结

教材学习内容总结

继承的基本知识:extends的概念(相当于把父类的代码复制粘贴到了子类代买中);

private以及protected标识的用法(原则上用private,但是需要引用、又不破坏封装原则,就使用protected);

super的用法(引用父类中的相关实例数据);

在子类的运行式当中需要注意输入的数据格式,才能确保代码运行不出错(当然一般来说也需要main主方法,无法运行的运行代码没有存在的意义)。

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

问题一:如果private在大多数情况下就可以够用,那么protected的存在意义究竟是什么呢?

问题一解决过程:根据课本P232的说法,在该类的派生类中需要引用这个具体数字时,比如一个private int a= 101,那么在派生类当中就不可能知道这个a是101,然而如果派生类的运行无法脱离这个a的具体值的话,private的功能就有些不符合需求了。因此protected的存在意义就是:可以引用,但是不可更改父类中的这个值。

问题二:抽象类的特征是什么?在什么时候需要使用抽象类?

问题二解决过程:抽象类的特征一般来说就是类中有一个抽象方法,而抽象方法的特点就是:没有定义的方法,有时候甚至是空白方法。一般来说子类继承这样的父类的时候,可以根据需要各自编写这个抽象类中的抽象方法。

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

问题一:没有搞清楚getXX和setXX两种方法的区别,导致了运行错误。

问题一解决过程:经过实践和参看优秀同学的代码得知,get的目的是输出,所以需要有输出值(不能设置为void);而set的目的就是建立一个变量,所以需要输入,因此括号当中需要有变量(形式参数)。否则在运行的过程中就会出现错误。

[代码托管](https://gitee.com/besti1823/20182308IZUMO)

上周考试错题总结

问题一:The instruction super( ); does which of the following?

A.calls the method super as defined in the current class
B.calls the method super as defined in the current class'parent class
C.calls the method super as defined in java.lang
D.calls the constructor as defined in the current class
E.calls the constructor as defined in the current class'parent class
错解:B 正解:E

问题一解决过程:意思就是说super的作用,是在子类中可以引用父类的实例方法。

 

问题二:Which of the following is not a method of the Object class?

A.clone
B.compareTo
C.equals
D.toString
E.all of the above are methods of the Object class
错解:E 正解:B
问题二解决过程:课本P238~P239,题目当中的另外三个都有提到,但是compareTo的方法并没有。这个可以作为积累,记住就好。
 
问题三:Abstract methods are used when defining
A.interface classes
B.derived classes
C.classes that have no constructor
D.arrays
E.classes that have no methods
错解:E 正解:A
问题三解决过程:抽象类运用于接口相关的程序当中,因为是在别的代码当中实例化的,所以需要设立为abstract的。

本周结对学习情况

点评过的同学博客和代码

[20182312](https://www.cnblogs.com/shouko/p/11632973.html)

结对照片

结对学习内容

一起解决了实践一、实践四、实践五需要团队合作的内容;

报团取暖,在ddl之前一起赶作业ovo。

上周博客互评情况

[20182312](https://www.cnblogs.com/shouko/p/11569734.html)

其他

1、在国庆假期中的学习其实是充满相当的困难性的,因为大部分优秀同学都无法解答代码相关的问题,同时自己也有一些学习的怠惰性,很容易掌控不好学习的节奏。实际上操之过急、在假期开始之前就做完实验以及过于稳健、在deadline前夜依旧有条不紊的行为都是不正确的。每天稍微学习和理解一些,(尤其是我们现在正在衔接到Android的关键时期)不一定要时刻上机,注意书本和网络知识的有机结合,并且留给自己一定的时间(当然也不用太多)去慢慢消化、和旧的知识有机结合。

2、因为在学习C语言的时候已经可以看出个人的代码思路很混乱、不合理,缺乏逻辑性,因此应该积极学习班中优秀的、逻辑清楚的同学的代码思路,同时也要尝试着写伪代码,来帮助自己理清思路。

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 6000 30 400h  
第一周 101/101 2/2 23/23

了解了一些Linux系统操作入门、

学会了基本的JDB调试操作

第二、三周 353/441 3/5 42/67

能够基本记住Java代码编程中的格式代码。

了解了一些有关方法的特殊命令(比如substring)

了解了一些有关类的基本知识。

第四周 327/768 2/7 28/95 基本已经适应IDEA的基本功能
第五周 807/1575 2/9 17/112

基本能够理解继承的作用和用法,

初步了解了接口的代码原理,

能够正确分析优秀同学的代码思路

  • 计划学习时间:25h
  • 实际学习时间:17h
  • 改进情况:注意学习新知识、休息、理解知识、实践四者的统一,实际上是提高了学习的效率。

参考资料

 1、《Java程序设计与数据结构教程(第二版)》 

 2、《Java程序设计与数据结构教程(第二版)》学习指导 

posted on 2019-10-07 22:23  20182308hlh  阅读(171)  评论(1编辑  收藏  举报

导航