20182334 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结
教材学习内容总结
第五周主要是在国庆中度过的,也主要学的是第八章的内容,更充实、更饱满。
第八章:
- 继承:从一个已有的类派生一个新类的过程,目的是为了更快更节约的完成程序。继承会产生父类和子类,他们之间建立了is-a关系。保留字extends说明从已有类中派生一个新类。
- 在封装和私有的两难境地中,出现了protected修饰符,既可以提供最恰当的封装机制,也保持了其在原来类中可见性修饰符规定的权限。在满足可引用的程度上:public > protected > private。
- super引用:在一个类中指向父类。
- 多重继承:在Java中不支持多重继承,出现了接口,提供了多重继承的特性。
- 类层次:一个类可以是一个或多个其他类的父类。
- Object类:所有类都是由Object类派生的,Object的所有方法都可被java的每个类继承。
- 可见性:私有成员也被子类继承,但不能通过名字直接引用。不过可以间接引用。
教材学习中的问题和解决过程
-
问题1:is-a,has-a,like-a是什么?
-
问题1解决方案:is-a 是一种继承关系。假如 A is-a B
,那么B就是A的父类。
has-a 代表从属关系。假如 A has-a ,那么B就是A的组成部分。
like-a是一种组合关系。假如 A like-a B 那么B就是A的接口。
参考Java is-a,has-a,like-a是什么 (abstract[is a],interface[like a]区别) -
问题2:不明白书上<派生于抽象父类的类必须重写父类中所有的抽象方法,否则派生的类仍为抽象类。
-
问题2解决方案:看到一篇博客java 中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗
-
- 普通类继承,并非一定要重写父类方法。
-
- 抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法。
-
- 接口类继承。如果是一个子接口,可以扩展父接口的方法;如果是一个子抽象类,可以部分或全部实现父接口的方法;如果子类不是抽象类,则要求子类一定要实现父接口中定义的所有方法。
-
代码调试中的问题和解决过程
-
问题1:有些数学公式用java不会表示,例如开根号。
-
问题1解决办法:上网查找相关资料,得到的解答是
double n = Math.sqrt(m);
用sqrt来开根。
-
问题2:在我敲作业时,发现了如下问题,总是显红:
-
问题2解决方案:看书上教材发现,私有成员不能够直接引用,这才恍然大悟我用的是private。
以下问题不经出现在实验,也出现在自己调试代码的过程中,所以同样粘在这里
-
问题3:在实验一中,无论怎样都无法连接对方,很头疼。
-
问题3解决方案:利用cmd命令查找本机ip地址
再用ipconfig命令查找ip
-
问题4:按照问题一的方法找了ip地址,但输上去还是不管用,
-
问题4解决方案:仔细观察cmd命令发现自己找的是以太网的ip地址,但电脑没有连网线,而是连的WiFi,找到无线局域网的ip地址之后再连接就OK啦
-
问题5:无法打出printl。
-
问题5解决方案:一开始我以为是没有class文件,因为以前就遇到过这种问题,但我仔细看有class,于是和迷茫,询问结对伙伴才知道自己多打了个括号:
-
问题6:在写第二个实验的时候总是出现以下问题:
很棘手,也不知如何解决。
-
问题6解决方案:找助教学姐问了问,得到的回答是需要在命令行调试的地方输入值,这里引用个博客:IDEA如何输入命令行参数,完美的解决了我的问题
-
问题7:不明白以下代码的含义:
outputStreamWriter.write(info1);
outputStreamWriter.flush();
outputStreamWriter.write(info2);
outputStreamWriter.flush();
outputStreamWriter.write(s);
outputStreamWriter.flush();
scoket.shutdownOutput();
-
问题7解决方案:查看Java中OutputStreamWriter类的常用方法这篇博客。
write是构造一个输出流对象,大致意思是向服务器推送一条信息。 -
问题8:
info1 = bufferedReader.readLine();
其中的bufferedReader我不明白
- 问题8解决方案:JavaIO BufferedReader和BufferedWriter介绍和实例查看了这个博客,发现了很多不一样的东西,也解决了很多在实验四和实验五遇到的问题。
其他(感悟、思考等)
这个实验颠覆了我对自学的看法,说起自学很简单,但操作起来,是真的要命,无论是遇到自己见都没见过的知识点,还是自己要动手敲一个很棘手的代码,都困难重重,这个实验我和结对伙伴打了将近3天,才基本处理完毕,还有很多不足没有改进,代码中的漏洞也还很多,在实验完成后还要继续修正,修复bug。自己要学的东西还有很多,自己面临的知识盲区也无穷无尽,每多打一部分代码,就会发现自己原来知道的是那么少,九牛一毛都觉得多。随着学习的深入,懂得越多,但又发现自己懂的是那么的少,产生矛盾。
代码托管
上周考试错题总结
上周无考试
点评过的同学博客和代码
其他(感悟、思考等,可选)
一周又飞快的过去了,这周在我看来,进步很大,在上周的学习过程中,不明白类和方法之间的关系,但在这一周的不懈努力下,知道了如何学习这方面的知识,虽然学习的过程中很不轻松,但在获得成就后会很开心。一个月过去了,自己也学到了很多东西,能明白自己的定位,也能清楚自己的水平,知道自己薄弱点在哪里,如何补充、加强,在下一周的学习生活中,我会加强代码的练习,增加代码量,争取敲到2500行。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 212/212 | 2/2 | 17/17 | |
第二周 | 132/344 | 2/4 | 17/34 | |
第三周 | 689/1033 | 1/5 | 23/67 | |
第四周 | 664/1697 | 2/7 | 20/87 | |
第五周 | 586/2283 | 2/9 | 20/107 |
-
计划学习时间:20小时
-
实际学习时间:20小时
-
改进情况:心理承受能力越来越好,碰到难题不会怕,而是会慢慢啃他。