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

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

教材学习内容总结

第六章:

  • extends:继承某个类,继承之后可以使用父类的方法,也可以重写父类的方法,只要那个类不是声明为final或者那个类定义为abstract的就能继承。

  • JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行。

    eg.class A extends B implements C,D,E

  • 子类与父类之间有is-a的关系。

  • 继承父类之后,定义与父类中相同的方法部署,但执行内容不同,这称为重新定义。

  • 内建的标准标注:@Override 表示要求编译程序检查

  • 内含抽象方法的类,一定要在class前标示abstract

  • 子类继承抽象类:①继续标示该方法为abstract;②操作抽象方法。

  • 权限关键字与范围

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

权限从小至大:private、无关键字、protected、public

  • public、protected、pricate三者区别

  • 取得父类中的方法定义,调用前加上super关键字,但是父类不能为private,this和super只能调用,一定要在构造函数第一行执行。

  • final:表示不会再有子类,不能被继承。

  • java.lang.Object是所有类的顶层父类

第七章:

  • 接口可以用于定义行为但不定义操作

  • inferface定义抽象行为与外观,接口中的方法可声明为public abstract,接口中的方法没有操作时,public abstract可以省略。

  • enum定义枚举常数。实际定义特殊的类,继承自java.lang.Enum

JDB知识点:

  • stop in 用来设置方法断点,stop at 设置行断点

  • 学习(JDB)调试我们要学会设置四种断点:方法断点、行断点、条件断点、临时断点

命令 作用
run 开始调试
next 执行下一个语句
locals 查看局部变量
step 进入方法,进入函数跟踪
dump 查看对象的值
where all 告诉所有线程的当前运行位置
list 当前运行的代码
quit/exit 退出JDB

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

  • 问题一:this()和super()的区别

  • 解决: super表示父类的意思,是离super最近的一个父类。this变量代表对象本身。

两者引用构造函数时:①super:调用父类中的某一个构造函数

②this:调用本类中另一种形成的构造函数

eg.super:

class Some {
Some() {
System.out.println("调用Some()");
} Some(int i) {
System.out.println("调用Some(int i)");
}
} class Other extends Some {
Other() {
System.out.println("调用Other()");
} Other(int i) {
super(i);
}
}
  • 问题二:操作equals()实际上是操作equals()也操作hashCode()???

  • 解决:hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值。

①如果根据 equals(Object)方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。

如果两个hashCode()返回的结果相等,则两个对象的equals方法不一定相等。

②如果根据equals(java.lang.Object)方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不一定生成不同的整数结果。

  • 问题三:abstract方法和abstract类

  • 解决:abstract 不可以和static、virtual、final、native一起使用

抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法。

1:用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化。

2:用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。

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

  • 问题一:按照书上的代码,出现的问题和上周一样,类中找不到符号和还有没有void main这两个问题。

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

  • 解决方案:要建立包,把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用这个简单但困扰我很久的问题终于解决了。

    eg.

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

  • 问题二:在写p214的ClientQueue代码时,出现了以下的错误

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

我又仔细对照书上检查,没有错,我就暂时没有管这个问题。最后运行整个包的代码时,结果如下,与书上的答案一样。

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

但我还是上网查询了这个问题,网上说明错误如下

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

所以泛型应该怎么编写?这又是一个新的问题。

(我在网上找到关于 泛型 的一篇博客 ,但是内容较多,在提交博客前,这篇博客还没有学习完,会在下周学习完这个问题的。)

代码托管

  • 代码提交过程截图及代码量截图:
  • 因为这周在git commit时出现了以下的错误,所以我重新建立了一个文件夹,将之前的代码复制了过来,所以总代码量还是总代码量,但这周的代码量=1382-551(之前的代码量)=831;

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

上周考试错题总结

  • 错题一:19.填空:“30”转化为byte类型的30的语句是(Byte.parseByte(“30”);)

  • 错题二:1.填空:Linux Bash中,(grep )命令可以进行全文搜索。

grep它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行

  • 错题三:4.填空:System.out.println(“”+52+25);的结果是(5225)

  • 错题四:5.填空:System.out.println(52+25+””);的结果是(77)

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

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

  • 错题五:11.判断:Java中,=与==并没有在基本类型和类类型的不同。(OK)

  • 错题六: 28.填空:Java中类的成员变量必须进行初始化,否则会出语法错误。(X)

  • 错题七: 15.判断:Java中的二维数组必须是M*N的规则数组。(X)

  • 错题八:30.填空:Java中方法参数只用(传值)调用。

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

这周的学习内容是继承、接口与多态的运用,第六章刚开头的游戏角色和

第七章的海洋乐园游戏是比较让我感兴趣的,想要开发一个游戏或者软件,就是要考虑到方方面面的问题。继承与接口仿佛就像每次想到的小问题,在父类的基础上进行添加,这样的编写比在c语言中要方便的多,而且逻辑性比较清晰。

在代码的练习上,我觉得还是不够,因为遇到的题目有限,所以很多还不是很熟练,还要参考书上的例子才能写出代码,所以在以后,还是要多多练习代码,毕竟学习c语言的时候除了理解,更多的也是练习代码。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 15篇 400小时
第一周 9/9 1/1 20/20
第二周 162/ 171 1/2 25/45 学习java的基础语法
第三周 380/ 551 1/3 25/70 学习java对象及封装
第四周 831/ 1382 1/4 23/93 学习java的继承、接口与多态的运用

参考资料

上一篇:对word2vec的理解及资料整理


下一篇:(转)word2vec前世今生