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

教材学习内容总结

继承与多态:

  • 子类和父类有(is a)关系,Role role1 =new Swordsman();右边类是左边类的一个子类,swordsman是一种(ia )Role;
  • private成员会被继承,只不过子类无法直接存取;
  • Swordsman swordsman=(Swordsman)role1; 将role扮演Swordsman;
  • 权限关键字:
- protected 类内部和相同包类可存取,不同包类的子类可存取。
- public 类内部和相同包类,不同包类均可存取。
- private 类内部可存取。相同包类,不同包类不可存取。
  • instanceof 运算符执行时期只要左操作数是右操作数子类型,instanceof返回ture

  • 多个类间出现重复代码时候,可以把相同的程序代码提升为父类;

  • 继承时用extends关键字,private成员也会被继承,子类无法直接存取,必须通过父类方法存取。

  • 检查多态语法是否正确,从=右边往左边读,右边是左边的子类就对。

  • 多态就是用单一接口操作多种类型的对象。

  • 没任何代码操作,就使用abstract标示该方法为抽象方法,表示这个类定义不完整不完整的类不能用来生成实例,不用写{},直接;结束。

  • [ ] public abstract class Role{

    public abstract void fight();

    }

    一定要在class 前标示abstract

  • 子类继承抽象类有两种方法,

  • 1:继续标示该方法为abstract,(子类也是抽象类,class前你、标示abstract);

  • 2:操作抽象方法。

  • Java中三个权限关键字public,protected,private.有四个权限范围。

  • 想执行父类中某个构造函数,用super()指定。this()与super()择一调用,而且一定在构造函数第一行执行。

  • java中,任何类的最上层父类,就一定是java.lang.object

    JVM有垃圾收集机制,无法通过变量参考的对象,就是GC认定的垃圾对象。

    子类中没有指定调用父类中哪类构造函数,默认会调用父类中无参数构造函数。

接口与多态

  • 定义行为,JAVA中用interface关键字定义;
  • 操作接口,用implements关键字, implements Swimmmer(){。。。}就是操作接口
  • 继承有“是一种”关系,操作接口表示“拥有行为”,但不是是一种关系。
  • 行为多态
  • Swimmer swimmer1 = new Shark();判断“右边是不是拥有左边行为”,或者“右边对象是不是操作了左边接口”
  • final:
  • class前使用final,表示这是最后一个类,不会再有子类,定义方法时,定义该方法为final,说明最后一次定义该方法,子类不可以重新定义该方法。
  • enum语法可定义枚举常数,enum中定义了特殊的类,实际上定义了类,无法撰写程序直接实例化,枚举类型,因为构造函数权限定为private,只有类中才可以实例化。

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

  • 问题1:包权限问题

  • 解决方案:Action中定义的execute()其实默认为public abstract,而some类在操作execte()方法时,没撰写public,默认了包权限,等于将Action中public的方法缩小到包权限,所以编译失败。需要把Some类中execute()设为public才可以运行。

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

  • 问题1:无法从静态上下文中引用非静态方法”这个问题怎么解决?

  • 解决方案1:我把Magician。setbolod大写M了,应该小写。

  • 用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫做类方法或者类变量。

    静态方法中不能直接调用非静态方法。因为非静态方法不是独立存在的,它是依附于对象存在——即只有申明了对象,才能通过对象调用。而静态方法则可以直接通过类名调用,而不需要申明对象。因此直接引用非静态方法就会出错。

    比如常见的main方法都是静态的,必须由static修饰,因此在main方法里调用类的其他非静态方法,都是需要先申明对象,才能用。否则就会出现引用非静态方法的错误。

    要解决这个问题,可以去除一般方法的static关键字(如果是main方法,则不能去掉static)。另外一种方法就是把需要引用的方法也设置成静态方法。

  • 问题2:构造函数问题,输出什么?

  • 解决方案2:SOme是Other父类,题中SOme不是构造函数,因此并不会第一行执行父类的super(),直接输出下面的other service

  • 问题3:p190第3题输出是什么?

  • 解决方案:如果改成some,ToString 就可以正常输出,所以我感觉输出的是类里面文字转换成16进制数字了。

  • 问题4:我不小心把全部代码误删除了,因为开元中国里面我的src文件夹里没东西了,我就pull了一下到本地,结果都没了我这个月的代码。









  • 解决方案:

    我把之前的垃圾桶里文件还原,找回了一些,但是彻底解决方法还是不知道,所以以后一定要有一个备份文件夹,防止弄丢。

代码托管

  • 代码提交过程截图:

  • 代码量截图:

上周考试错题总结

  1. 填空:Linux Bash中,(grep )命令可以进行全文搜索。
    1. CH04 判断:p86 Guess.java中guess的值无法输入12。(X)
  2. CH05 判断:Java中类总会有默认构造方法。(X)
  3. CH05 判断:private不能用在构造方法上,这样就无法创建对象了。(X)
  4. CH05 填空:Java中类的成员变量必须进行初始化,否则会出语法错误。(X)
  5. CH05 填空:Java中成员方法中引用成员变量,要使用(this)关键字。
  6. CH05 填空:Java中方法参数只用(传值)调用。

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

本周学习时间很长,懂了好多东西,而且发现编程与看书一起效果最好。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 700/1400 7/9 27/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

参考资料

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

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

    20155220 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 JDBC(Java DataBase Connectivity)即java数据库连接,是一种用 ...

  2. 20155211 2016-2017-2 《Java程序设计》第九周学习总结

    20155211 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 一.JDBC入门 (一)JDBC简介 厂商在操作JDBC驱动程序时,依 ...

  3. 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结

    20155210 2016-2017-2<Java程序设计>第一周学习总结 教材学习内容总结 1.1.1: 本节主要讲了Java的由来,1995年5月23日是Java公认的诞生日.还有版本 ...

  4. 20155313 2016-2017-2 《Java程序设计》第九周学习总结

    20155313 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. August 05th 2017 Week 31st Saturday

    All endings are beginnings, we just don't know it at the time. 所有的结局都是新的开始,只是当时我们不知道而已. Several mont ...

  2. Undirected Graphs

    无向图 Introduction 图是由边连接的点的集合,有着广泛的应用空间. 一些图的术语,点,边,路径,环(圈),连通分量(子图). 简单路径不重复经过点,简单环不含有重复点和边,简单图不含自环和 ...

  3. iOS js 使用与JSContext

    JSContext:js执行环境,包含了js执行时所需要的所有函数和对象: js执行时,会在执行环境搜索需要的函数然后执行,或者保存传入的变量或函数: JSContext *jsContext = [ ...

  4. 【jQuery】Deferred(延迟)对象

    本文针对jQuery-todolist项目中使用到的Deferred(延迟)对象进行具体分析 $.Deferred() 是一个构造函数,用来返回一个链式实用对象方法来注册多个回调,并且调用回调队列,传 ...

  5. Kali-linux使用Maltego收集信息

    Maltego是一个开源的漏洞评估工具,它主要用于论证一个网络内单点故障的复杂性和严重性.该工具能够聚集来自内部和外部资源的信息,并且提供一个清晰的漏洞分析界面.本节将使用Kali Linux操作系统 ...

  6. springmvc与Structs2本质区别

    1.前端控制器不同:structs2入口是一个filter过滤器,springmvc入口是一个servlet. 2.设计思想不同: struts2通过在action类中定义成员变量接收请求参数,str ...

  7. 由于开发需求需要在附件查看页面添加水印,于是网上看到一位大牛写了一个js加水印的方法觉得很实用,也很方便,记录一下,哈哈

    大牛的博客链接:https://www.cnblogs.com/daixinyu/p/6715398.html 提供给大家学习 我优化了几点 1,我把水印的样式单独提出来,这样会提高渲染水印的性能 2 ...

  8. week9:Recommender Systems

    Collaborative  filtering 的原理不是很理解? xi   是每一步电影的特征向量,表示浪漫/动作

  9. Eclipse配置多个Tomcat服务器

    我们在开发大型web项目时,经常需要在eclipse中同时启动多个tomcat服务器来开启多个服务.这里讲解一下如何在eclipse中配置多个tomcat服务器. 配置步骤 1. 在tomcat官网( ...

  10. 关于日期的一些常用方法的封装——dates.js

    针对自己在日常用到的一些日期方法,整理成一个js日期插件,插件定义了一个dates全局对象,继承了Date函数,相当于在Date函数上做了一些扩展. 这个插件会不断更新,所有我之后用到的关于日期的自定 ...