20175221   《Java程序设计》第5周学习总结

教材学习内容总结

  • 接口的定义

  • 接口声明:interface 接口名

  • 接口体中只可以有常量,而没有变量
  • 接口体中只有抽象方法(可省略public final static abstract)
  • 接口的实现
  • 实现格式:class 类名 implements 接口名(可以实现一个或多个接口)
  • 重写接口中的方法:
  • 非抽象类:必须要重写接口中的所有方法,且加上public
  • 抽象类:可以重写,也可以直接拥有其方法
  • 接口的UML图、回调、多态
  • 接口的UML图中,类是起始端,接口是终止端。
  • 接口的回调是指,把可以实现接口的的类的对象引用赋给接口变量,该接口变量就可以调用被类实现的接口方法
  • 接口也是一种数据类型,接口变量无法调用类中的其他的非接口方法。
  • 接口的多态是指,变量在回调发方法时可能可能具有多种形态
  • abstract和interface的关系
  • 接口中只可以有常量,不能有变量
  • abstract类和接口都可以有abstract方法
  • abstract类中可以有非abstract方法,接口不可以

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

  • 问题1:

  • 父类中有个public void fight(),子类中有个public void fight( Weapon w),这两个方法的关系是Override?

  • 问题1解决方案:

  • 子类重写的方法,方法名字、参数个数、参数类型和父类的方法完全相同。这里是重载。

  • 问题2:
  • 如何理解在实现接口时,可以实现一个或多个接口
  • 问题2解决方案:
  • 查阅资料知
  • 接口是抽象的最高境界
  • Java除了平台无关的特点外,从语言的角度来看,Java的接口是该语言的又一特色。Java舍弃了C++语言中多重继承的机制,使得编写的代码更加健壮和便于维护,因为多继承不符合人的思维模式,就像生活中,人只有一个父亲,而不是多个。
  • 尽管多继承可以使编程者更加灵活的设计程序,但是程序会显得难于阅读和维护。
  • Java不支持多继承性,即一个类只能有一个父亲。通过继承方式只能得到一个多态。单继承性使得Java简单,易于管理和维护。那么为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口,Java的接口更加符合人的思维方式。

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

  • 问题1:对实现接口回调的一些理解

  • 问题1解决方案:

  • 编写代码进行测试

  • 首先创建接口test:
  • 用Tom 实现这个接口,重写相应的方法
  • 编写主类并运行结果
  • 感觉就是和上转型对象实现的多态非常相似

代码托管(https://gitee.com/zxjacdl/zxj175221/tree/master/six.1)

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

上周考试错题总结

错题1:

下列说法错误的是:

A.  继承的成员变量或方法的访问权限可以由子类重新定义。

B.  若子类和父类不在同一包,子类只继承父类中的protected和public访问权限的方法作为子类的方法。

C.  继承关系的UML类图用一个实线连接两个类,起始端是子类,重点端是父类,终点端使用空心三角形表示实线的结束。

D.  如果在类本身创建一个对象,则该对象不可以通过“.”运算符访问继承的protected变量。

错题1解决方案:

选 A D

A:继承后访问权限保持不变。

D:可以通过才对。.

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

  • 第六周的教材内容相对较少
  • 于是趁着这个机会
  • 把前边些天四五章还不算太掌握的内容又熟悉了一遍
  • 敲了一下代码
  • 总体感觉这周学习效率还挺高。

学习进度条(四月份继三月份)

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标   5000行 8篇 100小时  
第一周 13/13 1/1 12/12  
第二周     309/322 1/2 13/25  
第三周     614/923 1/3 15/40  
第四周       384/1379 1/4 12/52  
第五周       565/1954 1/5 12/64  

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:12

  • 实际学习时间:12

  • 改进情况:继续保持稳定前进

(有空多看看现代软件工程 课件软件工程师能力自我评价表)

参考资料

20175221 《Java程序设计》第5周学习总结的更多相关文章

  1. 20175221 2018-2019-2 《Java程序设计》第一周学习总结

    20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. LeetCode算法题-Longest Harmonious Subsequence(Java实现)

    这是悦乐书的第270次更新,第284篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第136题(顺位题号是594).我们定义一个和谐数组是一个数组,其最大值和最小值之间的差 ...

  2. docker容器日志收集方案(方案四,目前使用的方案)

    先看数据流图,然后一一给大家解释 ​ 这个方案是将日志直接从应用代码中将日志输出到redis中(注意,是应用直接连接redis进行日志输出),redis充当一个缓存中间件有一定的缓存能力,不过有限,因 ...

  3. 【English】20190418

    interested 感兴趣的[ˈɪntrəstɪd] arrange your time 安排自己时间[əˈreɪndʒ] If interested, please arrange your ti ...

  4. SQL 和 NoSQL 的区别

    一.概念 SQL (Structured Query Language) 数据库,指关系型数据库.主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源). No ...

  5. Vim配置(python版)

    由于马上将用到django框架,需要有一个好的ide来coding,之前做C的开发时候体会到了vim的强大,所以编写python也决定采用vim. PS:除了vim,一般浏览代码多用atom和subl ...

  6. .NET IL实现对象深拷贝

    对于深拷贝,通常的方法是将对象进行序列化,然后再反序化成为另一个对象.例如在stackoverflow上有这样的解决办法:https://stackoverflow.com/questions/785 ...

  7. 【Android】pidcat 不显示日志输出

    问题: 直接安装了 pidcat :  brew install pidcat ,装完以后执行 pidcat <package name> ,发现没有日志输出,adb devices 也能 ...

  8. JS 灵活使用 console 调试

    前言: Web 开发中最常用的调试就是 console.log(),console 除了 本身 log() 方法外,还有其他很多方法. console.log() console.log() 有许多意 ...

  9. Java的selenium代码随笔(3)

    /** 以下方法主要用于切换页面*/public void SetPageSwitch(String pageTitle) {Set<String> allWindowsHandles = ...

  10. SQL中ON和WHERE的区别

    SQL中ON和WHERE的区别 - 邃蓝星空 - 博客园 https://www.cnblogs.com/guanshan/articles/guan062.html