• 《Java程序设计》 第四周学习总结


    学号 20175313 《Java程序设计》第四周学习总结

    教材学习内容总结

    第五章主要内容

    • 了解子类的继承性

      • 子类和父类在同一包中的继承性(除private外其余都继承)
      • 子类和父类不在同一包中的继承性(只继承public和protected)
    • 掌握成员变量的隐藏和方法重写

      • 成员变量的隐藏:注意与this的区别。
        • 用关键字super对其进行操作。
        • 通过调用从父类继承的方法对其进行操作。
      • 方法重写:注意与方法重载的区别。
        • 语法规则:这个方法的名字、参数个数、参数类型和父类的方法要完全相同,但是方法的类型可以是父类方法类型的子类。
        • 重写目的:通过方法重写可以隐藏继承的方法,或是把父类的状态和行为改变成自身的状态和行为。
    • 理解何为多态性以及如何产生多态

      • 所谓多态就是指父类的某个方法被其子类重写时,可以各自产生自己的功能的行为。(后面的abstract会用到)
      • 将子类创建的对象的引用放到一个父类的对象中,就得到了该对象的一个上转型对象,那么这个上转型对象在调用这个方法时就可能具有多种形态。
    • 熟悉abstract的使用以及相关规则

      • 对于abstract方法,只允许声明,没有方法体。
      • 不允许用final和static修饰abstract类或方法。
      • abstract类不能用new运算符创建对象。但该对象可以成为其子类对象的上转型对象调用子类重写的方法。
    • 学会面向抽象编程

      • 目的:应对用户需求的变化。
      • 核心:让类中的每种可能的变化对应地交给抽象类的子类去负责。

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

    • 问题1:不太明白该代码编译不通过的原因。

    输入图片说明
    输入图片说明

    • 问题1解决方案:通过查阅课本并对上方问题进行深入剖析,最终理解的该代码出错的原因。
    • 理解情况:super必须是子类构造方法的头一条语句,该代码中子类B的头一条语句中并没有出现super,则默认super(),因此当父类中定义多个构造方法是,应当包括一个不带参数的构造方法,而A中不曾出现,因此出现了编译失败,若在A类中加上一个无参数的构造方法,则结果应该为2。
    • 运行结果截图:

    输入图片说明
    输入图片说明

    • 问题2:对于子类的上转型对象能否调用子类重写的静态方法,不是很清楚。

    输入图片说明
    输入图片说明
    输入图片说明

    • 问题2解决方案:上机运行改程序,查看结果。
    • 运行结果截图:

    输入图片说明

    • 结果表明:如果子类重写了父类的静态方法,那么子类对象的上转型对象不能调用子类重写的静态方法,只能调用父类的静态方法。

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

    • 问题:运行结果与教材上所给的不相符(教材133页例题)。

    输入图片说明
    解决方案:通过调试发现bottom可以成功的作为Geometry子类的上转型对象,但是height的值始终为0;
    后来发现是在Pillar类中少写了一句关于对height的操作。
    调试过程截图:
    输入图片说明

    输入图片说明

    输入图片说明

    输入图片说明

    输入图片说明

    代码托管

    (https://gitee.com/xiannvyeye/test)

    输入图片说明
    输入图片说明

    这周考试错题总结

    • 错题1

    输入图片说明
    正确答案:A
    我选择的是:B

    • 错误原因:不太清楚,我还是认为我的答案是正确的。
    • 理解情况:
      • instanceof的使用方法:instanceof运算符左面的操作元是对象,右面是操作元是类,当左面的操作元是右面的类或其子类所创建的对象时,instanceof运算的结果是true,否则是false。
      • 我的理解:
        1. 依照此定义,若一个实例对象是其子类所创建的对象,那么instanceof的值为true,但是它不是右边操作元的对象;
        2. 若一个实例对象是instanceof右边操作元所创建的,那么instanceof的值仍然为true,而它不是右边操作元的对象。
        3. 所以我认为无法通过instanceof的结果来判断实例对象是否属于一个类。
    • 错题2

    输入图片说明
    正确答案:ABCD
    我的答案:CD

    • 错误原因:对final这个关键字的使用理解的不够透彻,没有全面的看待它,只看到一些片面之处。
    • 理解情况:通过查看资料final类以及String类是否可以被继承,已经能够明白这道题了。

    心得体会

    • 这周刚成立结对小伙伴,我们暂时还没有开始一起学习,所以我在打代码的过程中出现了许多粗心的地方,导致我浪费的很多时间去调试,找Bug,我觉得我们结对之后这种事情的发生率一定会大幅度降低。
    • 第五章的内容较少,正是因为内容少,反而使我懈怠,周四才开始看,所以很多内容都是大致看一下,导致课后习题、测试题频繁由于概念问题出现错误。所以我觉得一定要合理分配时间。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 13/13 1/1 23/23
    第二周 317/330 1/6 22/45
    第三周 703/1044 1/7 31/76
    第四周 1263/2094 2/9 18/84

    参考资料

  • 相关阅读:
    java几种基本排序算法
    Java 数组
    java自增(自减)运算符
    java数据类型
    java变量
    java注释
    c语言数字图像处理(十):阈值处理
    c语言数字图像处理(九):边缘检测
    c语言数字图像处理(五):空间滤波
    c语言数字图像处理(八):噪声模型及均值滤波器
  • 原文地址:https://www.cnblogs.com/xiannvyeye/p/10582316.html
Copyright © 2020-2023  润新知