20165215 2017-2018-2 《Java程序设计》第4周学习总结

教材学习内容总结

chapter5

  • 子类与父类

    • 子类的定义使用关键字extends
    • 任何类都是Object类的子孙类,每个类(除了Object类)有且仅有一个父类,一个类可以有多个或零个子类
  • 子类的继承性
    • 如果子类和父类在同一个包中,子类继承父类中所有不是private的成员变量和方法
    • 当子类和父类不再同一个包中,子类只继承父类中的protected和public访问权限的成员变量和方法
  • 子类与对象
    • 当用子类的构建方法创建一个子类的对象时,父类的成员变量也都分配了内存空间
    • 子类对象可以调用继承的方法,操作没有继承的成员变量
  • 成员变量的隐藏和方法重写
    • 子类所声明的成员变量的名字和从父类继承来的成员变量的名字相同(声明的类型可以不同),在这种情况下,子类会隐藏所继承的成员变量
    • 子类继承的方法所操作的成员变量一定是被子类继承或隐藏的成员变量
    • 方法重写中,子类定义方法的名字、参数的个数、参数的类型必须和父类的方法完全相同(注意和方法重载的差别)
    • 重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限
  • super关键字
    • 子类不继承父类的构造方法
    • super必须是子类构造方法的头一句
  • final关键字
    • final类不能被继承,即不能有子类
    • 不允许子类隐藏可以继承的final方法
    • 如果变量被修饰为final,那它就是常量
  • 对象的上转型对象
    • 不可以将父类创建的对象的引用赋值给子类声明的对象
    • 如果子类重写了父类的某个实例方法后,上转型对象调用这个实例方法一定是调用了子类重写的实例方法
  • abstract方法只能出现在abstract类中
  • 如果一个非抽象类是某个抽象类的子类,那么它必须重写父类的抽象方法

    chapter6

  • 接口声明使用关键字interface
  • 接口体中只有常量没有变量,且只有抽象方法,常量和方法的访问权限一定都是public
  • 使用关键字implements声明类实现接口,如果实现多个接口,用逗号隔开接口名
  • 如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法
  • 如果父类实现了某个接口,那么子类也就自然实现了该接口
  • 接口变量可以存放实现该接口的类的实例的引用,即存放对象的引用
  • 接口无法调用类中其它的非接口方法

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

  • 问题1:例子6System.out.println(t.intValue())中关键字intValue的用法
  • 问题1解决方案:intValue()是把Integer对象类型变成int的基础数据类型,相关知识点详见Java中 intValue,parseInt,Valueof 这三个关键字的区别
  • 问题2:第五章课后习题3(4),在我理解中代码3结果应为18,可是运行结果显示为98
    • 代码

    • 结果

  • 问题2解决方案:这题涉及到两个知识点,一是如果子类重写了父类的静态方法,那么子类对象的上转型对象只能调用父类的静态方法;二是如果子类重写了父类的某个实例方法后,上转型对象调用这个实例方法时一定是调用子类重写的实例方法。在题目中正确分析、理解这两个知识点问题便解决了

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

  • 问题1:调试第五章例子2时出现如下错误

  • 问题1解决方案:记清楚创建对象使用的格式为类名 对象名 = new 类名,减少输入错误的发生
  • 问题2:调试第五章例子6时出现如下错误

  • 问题2解决方案:补上intValue中漏掉的t即可

代码托管

(statistics.sh脚本的运行结果截图)

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

随着不断地深入学习,各个知识点间的联系和区别也渐渐显露出来,许多新学到的知识都需要结合之前学过的内容才能更好地理解。例如要注意区别本周所学的方法重写与上周所学的方法重载,学会比较abstract类与接口的异同等等。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 37/37 1/1 15/15
第二周 398/429 2/3 15/30
第三周 753/1167 1/4 20/50
第四周 1296/2109 2/6 20/70

参考资料

20165215 2017-2018-2 《Java程序设计》第4周学习总结的更多相关文章

  1. 20165215 2017-2018-2 《Java程序设计》第九周学习总结

    20165215 2017-2018-2 <Java程序设计>第九周学习总结 教材学习内容总结 URL类 URL 类是 java.net 包中的一个重要的类,使用 URL 创建对象的应用程 ...

  2. 20165215 2017-2018-2《Java程序设计》第一周学习总结

    20165215 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 跟随网课学习了<Java2 实用教程>的第一章,进行了基础的编译练习 在Ubun ...

  3. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  4. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  5. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  6. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  7. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  8. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  9. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  10. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

随机推荐

  1. C++取出string的一部分以及int型转成string类型

    在实际应用中,对文件的操作是十分频繁的,我们需要对文件进行拷贝,重命名等操作,这是就需要获取文件的绝对路径,一般情况下,该路径是以字符串的形式存储的,如果我们需要对文件进行重命名等,就需要对绝对路径这 ...

  2. 为什么要使用 Docker(二)

    作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势. 更高效的利用系统资源 由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高.无 ...

  3. pymongo模块 目录

    MongoDB pymongo模块 MongoDB pymongo模块 查询 MongoDB pymongo模块 插入数据 MongoDB pymongo模块 更新数据 MongoDB pymongo ...

  4. python基础教程 变量/输入输出/if判断

    python的运用越来越多.大数据经常被人谈及,数据从何而来?通过各个平台.app.网站数据的收集,分析,过滤,生成报告,这些都可以用python来处理,并且有很多成熟的库可以直接用了.那还不赶紧深入 ...

  5. 小程序升级实时音视频录制及播放能力,开放 Wi-Fi、NFC(HCE) 等硬件连接功能

    “ 小程序升级实时音视频录制及播放能力,开放 Wi-Fi.NFC(HCE) 等硬件连接功能.同时提供按需加载.自定义组件和更多访问层级等新特性,增强了第三方平台的能力,以满足日趋丰富的业务需求.” 0 ...

  6. Mac OSX上卸载Anaconda

    方案一 anaconda安装程序在~/.bash_profile脚本中新添加了一行,将anaconda bin目录添加到了$PATH环境变量中.所以你只需要删除anaconda目录,但是最好也从安装脚 ...

  7. mysql连接池不能回避的wait timeout问题(转)

    起因 我们的项目组一直在使用albianj作为开发框架在开发应用.使用至今倒也是没有出现很大的问题,但最近加过监控的接口基本上都会在使用一段时间后,突然之间执行数据库操作变得很慢.虽然会变慢,但持续的 ...

  8. spring + mybatis配置及网络异常设置

    Spring引入mybatis <beans xmlns="http://www.springframework.org/schema/beans" xmlns:contex ...

  9. win7 x64安装TensorFlow

    在windows下安装的TensorFlow做学习研究之用,如果要进行技术,请看相关博文:CentOS7安装TensorFlow 1.安装Pytho3.5 首先到Anaconda网站去下载Window ...

  10. 使用github(一)

    一.使用Github(目的.基本概念) 1.目的 借助github托管项目代码 2.基本概念 (1)仓库(Repository) 仓库即项目的意思,你想在github上开源一个项目,那就必须要新建一个 ...