zoukankan      html  css  js  c++  java
  • 20182307 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结

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

    教材学习内容总结

    • 第九章 多态 介绍了面向对象程序设计三要素的最后一个要素:多态。它是指一个在不同时刻可以指向不同类型对象的引用变量。本章分别介绍了用继承、接口实现多态,也进一步深化了继承和接口的知识概念体系。
    • 第十章 异常 主要对于Java程序中出现的错误和异常进行了讨论。分别介绍了异常的主要种类、异常的处理方式、try-catch语句、异常的传播等知识。

    学习笔记:

    • 后绑定
      • 引用变量的类型要与它所指的对象的类完全匹配
      • 绑定直到运行时才确定下来,这个延迟的提交称为后绑定
      • 可以使用两种方法创建多态引用:继承与接口
    • 用继承实现多态
      • 引用变量可以指向声明继承于它的任意类的任何对象
      • 对象的类型决定调用的是方法的哪个版本
    • 接口
      • 接口是一组抽象方法,不能被实例化
      • 实现接口:一个类给出了接口中定义的每个抽象方法的实现
      • 实现接口的类在类头使用保留字implements
      • 多个类可以实现同一个接口
      • 一个类可以实现多个接口
    • 接口层次
      • 继承可用于接口,所以一个接口可派生于另一个接口
      • 实现子接口的任何一个类必须实现所有的方法
      • 接口中的所有成员都是公有的
    • Iterator接口
      • 用来表示类的一组对象,提供一种从头至尾每次访问一个对象的机制
      • hasNext返回一个布尔结果;next返回一个对象
    • 用接口实现多态
      • 接口名可用来声明对象引用变量
      • 接口引用可以指向实现这个接口的任意类的任何对象
      • 方法参数可以是多态的
    • 一个异常是一个对象
    • 常见异常
    异常原因 报错
    试图被0除 ArithmeticException
    数组下标越界 ArrayIndexOutOfBoundsException
    没有找到指定的文件 FileNotFoundException
    请求的I/O操作没能正常执行 IOException
    试图访问空引用所指的对象 NullPointerException
    试图执行一个违反某安全措施的操作 SecturityException
    • 处理异常
      • 不处理异常
      • 在异常发生的地方处理
      • 在程序的其他地方处理异常
    • try-catch语句
      • 一个try块可以有几个catch语句
      • 执行try块期间无论在哪里出现异常,控制将立即转向对应的catch处理器
      • 无论以何种方法退出try块时都要执行finally子句
    • 异常传播
      • 若在发生异常的方法内没有捕获并处理它,控制立即转向产生异常的这个方法的调用方法;异常会这样一直被传播,直到捕获并处理它,或是传出main方法,后者将导致程序中断
    • 必检异常和免检异常
      • 必检异常必须被一个方法捕获,或者必须列在抛出它或传播它的任意方法的throws子句中;只有RuntimeException或其后代类的对象才是免检异常

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

    • 问题1:多态的引用过程究竟是什么样的?
      • 书本内容:多态引用在运行时才将方法调用与它的定义绑定在一起
      • 个人理解:多态,顾名思义,是具有多种形态的,它在履行不同职责的时候会变化为不同的态。也就是说当运行到某一句调用方法的语句时,多态引用会根据该对象的类型来决定调用方法的版本
    • 问题2:什么是流?
      • 书本内容:流是字节的顺序序列,它可以用做输入源或是输出的目的地,流既可以看作是从中读出信息的输入流,也可以看成是写入信息的输出流
      • 个人理解:流的存在意义,就是让数据可以快速地传递到另一个指定的地点,它就像数据在程序和外部设备的固定单向管道, 连接着输入和输出两端,通过占据一定的内存每次传输一定的数据信息
    • 问题3:缓存到底是什么?
      • 网络资料Buffer与Cache的区别
      • 个人理解:Buffer的核心作用是用来缓冲,缓和冲击。比如一个程序每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写的操作上。用buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就会变小,写入效率提高的同时,极大缓和了冲击。
        Cache的核心作用是加快取用的速度。比如一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。

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

    • 问题1:inputStream.available()在循环判断中与显示不符,显示可读字符仍为1>0,但循环就跳出了
      1

      • 原因分析:在while语句中,inputStream.available()优先级先于关系单目运算符> < >= <= == != ,所以a的值在循环判断语句中先执行了一次,变为了0,从而跳出了循环
      • 解决方案:尝试用输出语句监控变量a的值的变化
        2
    • 问题2:用BufferedOutputstream和BufferedInputStream先写好文件后读入,发现多输出了一次的文本
      3

      • 原因分析:while中的bufferedInputStream.read(buffer)直接就执行并读出了文本,循环体里再执行一次就会导致文本二次打印
      • 解决方案:去除循环体,直接用bufferedInputStream.read(buffer)语句读出并打印
        4
    • 问题3:重写compareTo方法时,无法调用传入的对象参数的priority数值

      • 原因分析:没有正确实例化传入的对象的类
      • 解决方案:如下图
        6

    代码托管

    5

    上周考试错题总结(正确为蓝色,错误为红色)

    错题1

    Aside from permitting inheritance, the visibility modifier protected is also used to

    A .permit access to the protected item by any class defined in the same package

    B .permit access to the protected item by any static class

    C .permit access to the protected item by any parent class

    D .ensure that the class can not throw a NullPointerException

    E .define abstract elements of an interface

    • 原因:没有好好看书!书上原话“保护可见性的变量或方法可由同一包中的任何类来访问”
    • 理解情况:可见性修饰符protected被用于提供访问被保护的数据的权限,保护被限于当前类,同一包中的类和当前类的子类

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 10000行 30篇 400小时
    第一周 209/209 2/2 9/9
    第二、三周 290/499 2/4 18/28
    第四周 516/1015 2/6 22/50
    第五周 2981/3996 2/8 32/82
    第六周 1498/5494 2/10 20/102

    点评过的同学博客和代码

    • 本周结对学习情况

    • 结对学习内容
      - 封装三要素理解与应用
      - 多态引用的使用
      - 使用继承、接口实现多态
      - 自定义异常
      - 捕获异常

    • 上周博客互评情况

  • 相关阅读:
    R语言学习——数据分析
    java学习——类之YuanZhu
    java学习——类之YuanZhu
    java学习——构造类之3!+5!=126
    C# WebQQ协议群发机器人(二)
    Unity5.1 新的网络引擎UNET(七) UNET 单人游戏转换为多人
    转:Oracle GoldenGate学习之Goldengate介绍
    cvReadTrainData
    使用Handler在子线程中更新UI
    初识MVC
  • 原文地址:https://www.cnblogs.com/algerlu/p/11674606.html
Copyright © 2011-2022 走看看