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

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

教材学习内容总结

第九章 多态

  • 1.后绑定。效率低于编译阶段的绑定效率。
  • 2.学习练习如何利用继承方式来实现多态性。
  • 3.学习练习如何利用接口来实现多态性。
  • 4.多态性设计(多个不同对象执行相同的基本行为,并且行为的不同实现方式取决于对象的具体类型。)

第十章 异常

  • 1.异常处理(异常抛出的问题和处理异常的方法)
  • 2.未捕获的异常。
  • 3.try-catch语句与finally子句。
  • 4.异常传播。(就与传递性一样,举个例子:程序一存在异常,程序二调用程序一,程序二就会存在与程序一相同的异常。)
  • 5.异常类层次结构。(许多类型的异常类都由Exception类派生,但定义各种异常的子类却分散定义在其他几个包中,继承关系可以跨越包边界。)
  • 6.自定义异常与必检异常与免检异常。
  • 7.初步学习I/O流的部分内容和I/O异常。(三种标准I/O流(in、out、err))可检测的IOExceptions异常

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

  • 问题1:继承如何支持多态
  • 问题1解决方案:在Java中,使用父类声明的引用变量可以指向子类的对象。如何俩个类包含相同签名的方法时,父类引用是多态的。
  • 问题2:类与接口有什么不同
  • 问题2解决方案:类可被实例化,接口不能被实例化。接口可以只包含抽象方法和常量。类提供了接口的实现。类层次和接口层次不能交叉。类可以用来派生一个新类,接口可用来派生一个新接口的实现。
  • 问题3:如何使用接口完成多态
  • 问题3解决方案:接口名可作为引用类型使用。这样的引用变量可指向实现该接口的任意类的任何对象。因为所有的类实现了同一个接口,他们有公共的签名,所以可以动态绑定。
  • 问题4:try-catch语句的运用。
  • 问题4解决方案:如果代码没有产生异常,将继续执行try语句后的语句块,所有catch子句后的语句。如果有异常,则控制立刻转移到相应的catch子句处理异常。
  • 问题5:finally子句的应用。
  • 问题5解决方案:一条try-catch语句可以有一个可选的finally子句,用于定义一段无论是否有异常发生都将执行的代码。如果有finally子句,则必须跟在所有的catch子句后面。try语句块可以没有catch子句,但仍然可以使用finally子句。
  • 问题6:可检测异常与不可检测异常的差异
  • 问题6解决方案:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来。throws子句用在方法头。throw子句用在方法中。java中唯一的不可检测异常是RuntimeException类的对象或该类的后代类对象。

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

  • 问题1:

  • 问题1解决方案:

  • 问题2:如何实现try catch的无限循环?

  • 问题2解决方案:在try catch外一层设置无限循环,使用一个布尔数控制循环的终止。当程序捕捉到格式错误时把布尔数改为false,直到输对改为true,跳出循环。

代码托管

上周考试错题总结

  • 1.

  • 解析:在每次连续的选择排序中,会找到未排序的最小值,并与当前数组索引进行交换(其中当前索引从0开始,一直到数组中倒数第二个位置)。在第一次传递时,最小的元素2与索引0交换,因此2和9交换位置。

  • 单词:index(索引)element(元素)algorithm(算法)

  • 2.

  • 解析:重载只是为具有不同参数列表的方法提供了替代方法。覆盖提供了多态性,因为调用适当的方法取决于当前引用的对象。嵌入是类中类的封闭。抽象与多态性无关。封装是使用可见性修饰符(public、private、protected)实现的。

  • 单词:Overloading(重载)Overriding(覆盖)Embedding(嵌入)Abstraction(嵌入)polymorphism(多态性)

  • 3.

  • 解析:反了!决定调用哪个方法的是对象的类型,而不是引用的类型。

  • 单词:reference(引用)invoked(调用)

  • 4

  • 解析:调用堆栈跟踪提供存储在运行时堆栈中的方法的名称。方法名称从堆栈中删除以相反的顺序放置,也就是说,最早的方法是先放在这里,下一个方法其次,等等,所以最近调用的方法是在堆栈上最后一项,这是第一个删除。堆栈跟踪然后显示所有活动方法的调用顺序(最近一次)。

  • 单词:stack trace (堆栈跟踪)opposite (相反)

  • 5.

  • 解析:如果字符串方法的参数引用了字符串中超出字符串界限的位置(例如,一个负整数或一个大于或等于字符串中字符数的整数),则抛出StringIndexOutOfBoundsException。这可以在charAt或子字符串方法中发生。

  • 单词:bounds(界限)substring(子字符串)

  • 6.

  • 解析:这两个异常都是RuntimeException的子异常,而RuntimeException本身就是Exception的子异常。Error是一个可抛出的对象,与Exception不同,IllegalAccessException和CheckedException是Exception的子对象,而不是RuntimeException的子对象。

  • 单词:derived(派生的)

  • 7.

  • 解析:B、C和D中的答案都是正确的,runtimeexception是可抛出的对象,不属于Error类,有两种类型的runtimeexception是arithomeexception和NullPointerException。非runtimeexception的异常包括各种已检查的异常,但runtimeexception不是已检查的异常。

  • 8.

  • 解析:数据流表示特定的源或目标流,用于输入或输出。处理流类似于数据流,其中一些附加的流程被添加到输入或输出中。例如,处理字节流可能会从文件中输入所有项,并删除任何非数字的ASCII字符,以便预期为数字的输入不会引发NumberFormatException。

  • 单词:stream(流)destination(目的地)

  • 9.

  • 解析:在Java, System中有三个可用的默认流。在System.in,System.out ,System.err所有这些都是带有System的对象。System.in作为一个输入流,System.out 是一个输出流,System.err是一个错误流(也是一个输出流)。

  • 单词:indicates(表明)

  • 10.

  • 解析:Java程序的输入是困难的,因为它需要大量的开销。扫描仪类实现了所有这些开销,因此程序员不必看到它。因此,扫描仪是执行输入操作的抽象,没有细节。这些细节包括导入java。io类,以某种方式处理ioexception,从标准输入流输入,将输入划分为单个标记,并根据需要将每个标记转换为请求表单。

  • 单词:converting(转换)tokens (令牌)overhead(开销)

  • 11.

  • 解析:readLine()方法返回一个字符串,该字符串等于文件中的下一个文本项。如果文件为空,则返回null。

  • 单词:assume(假设)

点评过的同学博客和代码

  • 本周结对学习情况
    • 20182317
    • 20182318
    • 结对学习内容
      • 对多态的学习和讨论
      • 多态与继承和接口的关系
      • 对异常的学习和讨论
      • 三种标准I/O流(in、out、err)

其他(感悟、思考等,可选)

  • 本周学习了多态和异常,学习了多态与继承、接口之间的关系,还学习了如何捕获异常、处里异常的方法以及自定义一个异常。
  • 感觉我对于java的学习有点吃力了,有时侯老师课上讲的一些知识点课下就忘记了,听课效率不高,有时候会开小差。而且感觉课下自学的还是有点少了。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第一周 56/56 2/2 20/20 主要学会了简单的操作Linux以及如何编写简单的java程序并将它上传到码云
第二、三周 331/407 3/5 23/43 学会了一些类和程序包的使用,也明白了C语言和Java在有些地方的区别
第四周 595/1002 2/7 20/60 学会了IDEA以及用IDEAgit码云,也学会了TDD测试
第五周 1621/2623 2/9 17/77 见识了服务器与用户链接的代码,也学习了继承的一些知识。
第六周 1770/4393 1/10 22/99 学习了多态以及与接口和继承的关系,还有就是对异常的学习和处理异常的方法以及自定义一个异常
  • 计划学习时间:20小时

  • 实际学习时间:22小时

  • 改进情况:这周比上周的代码量又多了一点,不错。

参考资料

posted @ 2019-10-15 17:01  钱佳禹  阅读(165)  评论(1编辑  收藏  举报