学号 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结
教材学习内容总结
第九章 多态
-
执行时多态性是面向对象程序设计代码重用的一个最强大机制。Java多态性的概念也能够被说成“一个接口。多个方法”。Java实现执行时多态性的基础是动态方法调度,它是一种在执行时而不是在编译期调用重载方法的机制。
-
方法的重写Overriding和重载Overloading是Java多态性的不同表现。
-
重写Overriding是父类与子类之间多态性的一种表现。重载Overloading是一个类中多态性的一种表现。假设在子类中定义某方法与其父类有同样的名称和參数。我们说该方法被重写(Overriding)。
-
子类的对象使用这种方法时,将调用子类中的定义。对它而言。父类中的定义如同被“屏蔽”了。
-
多态发生的几个必要条件:
- 继承,从而出现多个不同子类;
- 重写,在子类中覆盖父类的方法;
- 向上转型,引用变量只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,是不能使用的;
第十章 异常
- java中异常处理的基本格式:
- (1)try catch finally 如果try中产生异常,则到catch中匹配对应的异常,然后进行相应的处理。
- (2)不管程序是否发生异常finally语句块都会执行。finally可以省略不写
- (3)catch()块运行完之后,程序继续向下走。
- 备注:异常处理过程中捕获范围小的异常要放在捕获返回大的异常之前处理。
- throws 与 throw
throws:表明当前方法不处理异常,异常处理交给调用者
throw:方法中可以人为的抛出一个异常类型对象,这个异常类对象可以是自己实例化也可以是已存在的。
RuntimeException 类
教材学习中的问题和解决过程
-
问题1:异常类的方法和异常类的体系
-
问题1解决方案: 在Throwable类中方法里面找到了每次出现异常的时候抛出的错误提醒和异常何处的问题。getMessage()[返回此 throwable 的详细消息字符串。]和getStackTrace()[提供编程访问由 printStackTrace() 输出的堆栈跟踪信息。]两个方法产生的。其中的Exception算是所有异常的父类,其下的所有子类都是每一个相对具体的异常。异常的规定也是按照一种编写类的方式,编写类中方法的方式进行构造的。
-
问题2:可检测异常和不可检测异常---RuntimeException类
-
问题2解决方案:Java中唯一的不可检测异常是RuntimeException类的对象或该类的后代对象。所有其他异常都是可检测的异常。对于可检测的异常是,发生异常的方法不捕获和处理该异常,则必须在该方法定义的声明头中包含throws子句。
代码调试中的问题和解决过程
- 问题1:IO操作及异常处理
- 问题1解决方案:刚听完IO的问题就要去编写IO的代码,感觉好恐怖。听的云里雾里的,尤其还有一堆的类去理解,用哪个不用哪个的问题,对应的writer和reader什么的,一堆一堆的,好在有老师给的代码可以参考。在老师的代码中有BufferedOutputStream和BufferedInputStream两种可供理解,两种字节流可以使用,进行往文件里面写入读出。
代码托管
上周考试错题总结
1.
解析:面向对象三要素:封装,继承,多态
解析:java向下转换必须由程序员显式地完成
3.- ...
解析:创建抽象类的唯一方法是在类中创建一些抽象方法。
解析:决定调用哪个方法的是对象的类型,而不是引用的类型。
解析:只有对数据进行排序时,二进制搜索才起作用。否则二进制搜索无法正常进行
6.
解析:异常被抛出后一旦达到主方法,此过程就会停止。如果没有在那里捕获,异常将导致程序终止但是,不会向异常类抛出异常。所以选D而不是A
解析:保留字throw用于在检测到异常时引发异常
解析:数据流表示特定的源或目标流,用于输入或输出
解析必须捕获选中的异常,或者必须将其列在throws子句中,这两种异常都遵循异常传播的规则。
结对及互评
评分标准
- 基于评分标准,我给本博客打分:14分。得分情况如下:
-
正确使用Markdown语法(加1分):
-
不使用Markdown不加分
-
有语法错误的不加分(链接打不开,表格不对,列表不正确...)
-
排版混乱的不加分
-
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
-
教材学习中的问题和解决过程, 一个问题加1分
-
代码调试中的问题和解决过程, 一个问题加1分
-
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
-
其他加分:
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
点评过的同学博客和代码
- 本周结对学习情况
- 多态与继承和接口的关系
- 对异常的学习和讨论
- 三种标准I/O流(in、out、err)
- 上周博客互评情况
其他(感悟、思考等,可选)
这周结束后,感觉本书已经学完了一大半,但是感觉自己还是以有很多问题,还有很多不足需要解决。课本上的知识还没有完全掌握就已经迎来了andoriod,甚是有些惆怅啊.
本周主要学习了面向对象的内容,包括类的继承和方法的使用等内容
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 126/126 | 2/2 | 20/20 | |
第二周 | 0/126 | 2/2 | 20/40 | |
第三周 | 353/479 | 2/6 | 20/60 | |
第四周 | 1760/2239 | 2/8 | 30/90 | |
第五周 | 1366/3615 | 2/10 | 20/110 |
|
| 第六周 | 534/4149 | 2/12 | 20/130 |