您的位置:首页 > 编程语言 > Java开发

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

2017-03-19 23:22 435 查看

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

教材学习内容总结

==继承==

6.1.1 继承共同行为

定义:继承基本上就是避免多个类间重复定义共同行为。

优点:1.提高了代码的复用性。2.让类与类之间产生了关系,才有了多态的特性。

3.减少代码冗余;维护变得简单;扩展变得容易。

extend
来继承父类。

6.1.2 多态与is-a

多态定义:使用单一接口操作多种类型的对象。

is-a
关系定义:子类只能继承一个父类,“是一种”关系。

编译程序在
=
从右向左会检查,右边是不是左边的子类。

可以在程序中加入语句强制默认为一种类型eg:Swordsman swordsman=
(Swords)
role1;

java语言中只支持单继承,不支持多继承。(由于多继承易带来安全隐患:当多个父类中定义了相同功 能,但功能内容不同时,子类对象不确定要运行哪一个。但是java保留这种机制,并用另一种体现形式来完成表示。多实现。)

6.1.3 重新定义行为

定义:在继承父类之后,定义与父类中相同的方法部署,但执行内容不同。

注意:在重新定义父类中某个方法时,子类必须撰写与父类方法中相同的签署。

JDK5之后支持标注,如果要重新定义某方法,加上
@override
,就不用担心错字问题。

6.1.4 抽象方法、抽象类

内含抽象方法的类,一定要在
class
前标示
abstract
,该方法不用撰写{}区块,直接以;结束。

子类继承抽象类,对于抽象方法有哪些做法?1.继续标示该方法为
abstract
2.操作抽象方法。

6.2 继承语法细节

6.2.1 protected成员

被声明为
protected
的成员,想通报中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。

依权限小至大来区分,就是
private
、无关键字、
protected
public
,若不知使用哪个,就先使用
private


6.2.2 重新定义的细节

如果想取得父类中的方法定义,可以在调用方法前,加上super关键字,但不能定义为private(因为这就限定只能在类内使用)。

注意:对于父类中的方法权限,只能扩大但不能缩小。若原来成员public,子类中重新定义时不可为private或protected.

JDK5之后重新定义方法时,如果返回值类型是父类中方法返回值类型的子类,也是可以通过编译的。

6.2.3 再看构造函数

如果子类构造函数中没有指定执行父类中哪个构造函数,默认会调用父类中无参数构造函数,若父类中只有有参数的构造函数,会出现编译错误。

this()
super()
只能择一调用,而且一定要在构造函数第一行执行。

6.2.4 再看final关键字

定义:最终。class前如果使用了final关键字定义满么表示这个类是最后一个,不会再有子类,就是不能被继承。

特点:1.可以修饰类、函数、变量。 2.被final修饰的类不可以被继承。3.被final修饰的方法不可以被复写。4.被final修饰的变量是一个常量,只能赋值一次。5.内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

6.2.5 java.lang.Object

如果定义类时没有使用extends关键字指定继承任何类,那一定是继承
java.lang.Object


任何类追溯至最上层父类,一定就是
java.lang.Object


6.2.5 垃圾收集

创建对象会占据内存,如果程序执行流程中已无法再使用某个对象,该对象就只是耗内存的垃圾。
JVM有垃圾收集机制,收集到的垃圾对象所占据的内存空间,会被垃圾收集器释放。
垃圾对象:执行流程中,无法通过变量参考的对象。

==接口==

7.1 何谓接口

格式:
interface{}


接口中将出现“多继承”通过两一种形式体现出来,即“多实现”。

接口是不可以创建对象的,因为有抽象方法。

接口可以被类多实现,也是对多继承不支持的转换形式。java支持多实现。

多态中成员函数的特点——编译看左边,运行看右边。 在多态中成员变量的特点——无论编译和运行,都参考左边(引用型变量所属的类)。 在多态中静态成员函数的特点——无论编译和运行,都参考左边。


7.2接口语法细节

接口中的
public
abstract
可以省略

接中可以使用
extends
继承接口,并且可以继承多个接口

匿名内部类与Lambda

JDK8 前在匿名内部类中访问局部变量,则该局部变量必须为
final


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

最开始尝试编译运行Role与Swordman,点开run却没有

这些并不是主程序,没有main入口。

代码托管

代码提交过程截图:



代码量截图:



上周考试错题总结

填空:Linux Bash中,(grep )命令可以进行全文搜索。

对Linux命令还是有很多没有掌握。

填空:两个Integer对象比较大小,可以使用(comareTo())方法

书上知识没有记住,误记成了equal(),现在已经掌握了、

判断:Java中类总会有默认构造方法。(X)

概念不牢。

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

-一周两章的内容确实不少,需要下更大功夫,更多的时间去理解,敲代码,不过感觉学到了游戏的初步小程序,感觉内心很满足,希望以后也可以编写自己的小游戏!

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周200/2002/220/20
第二周300/5002/418/38
第三周500/10003/723/61
第四周300/13002/920/81
计划学习时间:23小时

实际学习时间:15小时
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: