20182310 第五周学习总结
20182310 2019-2020-1 《数据结构与面向对象程序设计》第5周学习总结
教材学习内容总结
1.继承的概念:
继承是在父类和子类之间建立一种“是”的关系。
用于派生新类的原始类称为父类、超类或基类,被派生出的类就称为子类或者亚类。
2.影子变量:如果在一个子类中声明一个同名变量,则该变量称为影子变量。
3.类间关系有最基本的三种——依赖、聚合、继承。依赖关系:一个类依赖另一个类的情况称为依赖。一个类的对象含有另一个类的对象叫做继承。同时加深对UML类图的印象。
4.super引用,使用super引用可以访问父类的成员。子类构造方法负责调用父类构造方法,而且应该在子类的构造方法的第一行用super()引用调用父类构造方法。
5.类层次结构:继承关系通常发展成一个类层次结构。在类层次结构中,应当重视合理将类的公共特征保持在尽可能高的层级上。
6.重写方法:即子类和父类里面有相同的方法和签名时,子类方法可以重写父类方法,子类方法优先。调用方法的对象决定决定了哪一个版本的方法将被实际执行。
教材学习中的问题和解决过程
-
问题1:抽象类和接口的区别?
-
问题1解决方案:abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换。
抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。抽象类要被子类继承,接口要被类实现。接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现。接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。抽象方法只能申明,不能实现。abstract void abc();不能写成abstract void abc(){}。抽象类里可以没有抽象方法。如果一个类里有抽象方法,那么这个类只能是抽象类。抽象方法要被实现,所以不能是静态的,也不能是私有的。接口可继承接口,并可多继承接口,但类只能单方面继承。 -
问题2:使用自己定义的类时,无法获得想要的数据。
-
问题2解决方案:将被调用的代码中产生的数据代码进行更改,将方法名改为get开头的代码。就可以通过这一方法调用到数据。
-
问题3:类的派生代表什么关系?
-
问题3解决方法:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力,是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
-
问题4:在做密钥实验时遇到的问题
-
问题4解决方案:见图
代码调试中的问题和解决过程
-
问题1.打开IDEA时,无法创建新Java文件,原文件也无法运行,出现如下界面。
-
问题1解决方案:重新打开一个project即可解决。
-
问题2.在服务器或者是客户端调试时,出现红色波浪线或字体变成红色,调用类无法使用,例如出现如下情况:
-
问题2解决方案:创建新的类,或者是直接修改代码中的无关参数即可解决。也有可能是当前定义的public和文件名不相符。
-
问题3.做题的时候,发现在使用有理数计算器的时候,若随机数生成了0,就不会输出。
-
问题3解决方法:用printf输出,不够位数用if判断补0。
-
问题4:系统找不到指定的文件
- 问题4解决方案:经多方询问后发现是几个类文件未放在同一个文件夹底下导致未能找到类。
代码托管
上周考试错题总结
-
错题1:
-
错题1解决方案super指令表示当前类的父类中某项的调用。 由于没有消息,而只有super(),因此它是对父类的构造函数的调用。
-
错题2:
-
错题2解决方案:多重继承意味着给定的类继承自多个父类。 在上面列出的那些便携式计算机中,便携式计算机从PC和便携式设备继承属性。 A,B和E中的答案都是单继承的示例,其中一类至少有两个孩子(在A中,计算机有孩子大型机和PC,在B中,PC有孩子台式机和笔记本电脑,在E中,PC有孩子Macintosh Macintosh) 和IBM PC)。 答案D表示类的属性。
-
错题3:
-
错题3解决方案:Object类定义clone来创建任何对象的副本,等于确定两个对象是否是同一对象,以及toString来将Object转换为String。 但是,compareTo不是由Object实现的,必须在要实现Comparable接口的任何类中显式实现。
-
错题4:
-
错题4解决方案:length和toUpperCase消息没有参数,子字符串有两个int参数。术语,基类,父类,超类是另一个的同义词。 它们都暗示该类将用作继承的基础,而后续类将继承(继承自)该基类。 对于equals,必须将字符串作为参数传递,将接收消息的字符串与作为参数传递的字符串进行比较。
-
原因:没有弄懂length和equals的传参数能力
-
错题5
-
错题5解决方案:您只能实例化具体类,不能实例化抽象类。 但是您可以扩展Abstract类以及Interfaces。 D中的参数列表是非法的,因为它包含两个双精度参数而不是1。
-
错题6
-
错题6解决方案:受保护会尽可能限制可见性,同时仍然允许继承。 在某些方面,受保护的“通告”应该使用继承。
结对及互评
评分标准
- 博客中值得学习的或问题:
- 学习:在总结问题时有附上详细的图片,而我总是忘记截图,最后就导致问题记录不全,图片也不详细。
- 问题:教材学习内容总结不够详细。
- 代码中值得学习的或问题:无
- 基于评分标准,我给本博客打分:15分。得分情况如下:
-
正确使用Markdown语法(加1分):
-
模板中的要素齐全(加1分)
-
教材学习中的问题和解决过程, 一个问题加1分(2)
-
代码调试中的问题和解决过程, 一个问题加1分()
-
本周有效代码超过300分行的(加2分)
-
其他加分:
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
点评过的同学博客和代码
其他(感悟、思考等,可选)
本周是国庆周...但是作业量实在把我整懵了,实验的难度也不小,还有两篇博客需要完成。本周新接触的客户端和服务器很新奇,让我体会到了这门编程语言的强大,也让我学到了更多平时难以接触的知识。同时感想就是如果在学习之后的当时没有去思考、去感悟、只简单层次的了解,其实在学习过程中遗忘的还是蛮快的。所以之后还是要多回看。
ps: 实验越来越难了...作业量也越来越大,加上最近补课连续补上Java,有点顶不住,希望老师也要考虑一下我们的时间安排呀...
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第一周 | 155/200 | 2/2 | 20/20 | 初步掌握linux命令、java小程序和jdb调试 |
第二 三周 | 470/625 | 2/4 | 20/40 | 学会scanner定义的使用,类的定义 |
第四周 | 1444/2069 | 2/4 | 20/60 | 下载安装IDEA及其插件,学会TDD调试,编写测试代码 |
第五周 | 1917/3986 | 2/8 | 20/80 | 简单的学会客户端和服务器的编写 |