代码托管http://git.oschina.net/null_289/Java2016/tree/master
教材学习内容总结
本周学习了教材的第六章、第七章,这两章所讲代码设计都是以一个项目为基础的,所以着重讲了代码继承,多态操作以及接口语法。
1. 继承
-
定义:面向对象中,涉及对象过多时容易出现重复行为,为了避免这种情况,就可把重复的部分写成父类,由子类来继承父类。
-
关键字:
-
extends:子类继承父类时要使用extends,如public class子类 extends 父类,表示新建的类会扩充原有的类的行为。
-
protected:与private功能相似,但是在实际操作中,父类定义private成员无法在子类中存取,较为不方便,此时就可以改将其声明为protected,即可以在相同包中的类直接存取,继承的子类也可以直接存取。
-
final:用于class前,表示此类不会有子类,无法被继承。
-
Override:在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,这称为重新定义,在代码中加上@Override可用来检查该方法是否真的重新定义了父类中的某个方法,防止打错字,否则就会发生错误。
3. 重新定义的细节:如果想取得父类中的方法定义,可以在调用方法前加上super关键字,重新定义父类中的方法在子类中权限只能扩大不能缩小,返回类型是父类中方法返回类型的子类
4. 多态is-a:
-
子类只能继承一个父类,并且子类与父类之间有一种is-a的关系,子类 is a 父类,在编写代码时:父类=new 子类,让不是一种的类扮演另一种类需要加上类似于 强制类型转换的语法,如SwordsMan swordsman=(SwordsMan) role1。
-
使用单一接口操作多种类型的对象就是多态,个人的理解就是用一种父类来控制许多的子类。
2. 抽象方法、抽象类
- 定义:如果某个方法区块中真的没有任何程序代码操作,可以定义为抽象类,定义不完整的类就不能用来生成实例,(ps:内含抽象方法的类也一定要定义为不完整的抽象类,在工作中如果还有些方面没有确定,就可以调用抽象方法,等到平台确定后,再对代码进行符合这个平台的完善操作)
- abstract:抽象类以及方法需要用abstract标示该方法,如
public abstract void fight
3. java.lang.object:任何类的最上层父类一定就是java.lang.object,因此Object数组可以来收集各种类型的对象。
4. instanceof:左操作数为对象,右操作数是类,可以用来判断对象是否由某个类创建
3. 接口
-
使用interace关键字定义,类要操作接口,必须使用implements关键字,对接口中定义的方法有两种操作方式,一是操作接口中定义的方法,二是再度将该方法表示为abstract。操作接口表示“拥有行为”,不再是“是一种”的关系。
-
行为的多态:与继承类似,也可以让一个对象强行扮演某种行为。
-
接口语法细节: 接口中的方法没有操作时,一定得是公开并且抽象。
在interface接口中常常可以定义枚举常数(例:public static final int
),实际上,在interface接口中也只能定义public static final的枚举常数,并且一定要使用=指定值,否则就会编译错误。个人感觉枚举常数在表达意思上更清楚一些,便于程序员读懂程序。接口也可以继承接口。
4. 其他
- 匿名内部类:主要是在临时继承某个类或操作某个接口并建立实例的需求(例:
Some some=new Some(){};
) - enum枚举常数:
public enum Action{}
,实际上enum定义了特殊的类,enum中的元素也就是枚举常数。
教材学习中的问题和解决过程
刚开始学习继承的时候敲第一个角色游戏代码出现错误,在继承的时候,需要将完整的代码都放在同一个文件夹下,书中有时候只是展现一部分代码,但前面的角色定义还要敲上去,保证代码的完整性,这样子类才会继承父类。
教材中的一些内容讲得十分详尽,例如多态与is-a,翻来覆去讲不同的语句可能出现的编译失败的情况及原因,这部分的学习也十分重要,关系到以后写出来的东西有没有弹性、好不好维护的问题;书中也有一些表述比较少,让人看得不是很懂的地方,例如instanceof运算符,Override等,只能通过视频加以学习。现阶段还停留在敲书上代码的过程,希望自己能够在接下来提出些更有价值的问题。
代码调试中的问题和解决过程
学习中对于继承这一问题还不是很清楚。向同学请教后得知了自己的不足。
其他(感悟、思考等,可选)
已经学习了四个星期了,但是觉得这门课程还没有真正的入门。希望自己以后能够更有效率的学习Java。
学习进度条
代码行数 | 学习时间 | 博客数量 | 学习成长 | |
目标 | 4000 | 300 | 20 | |
第一周 | 100/100 | 5/5 | 2/2 | |
第二周 | 130/230 | 15/20 | 1/3 | |
第三周 | 240/470 | 12/32 | 1/4 | |
第四周 | 500/970 | 18/50 | 1/5 |