20145123刘森明《Java程序设计》第四周学习总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20145123刘森明《Java程序设计》第四周学习总结相关的知识,希望对你有一定的参考价值。

代码托管http://git.oschina.net/null_289/Java2016/tree/master

教材学习内容总结

本周学习了教材的第六章、第七章,这两章所讲代码设计都是以一个项目为基础的,所以着重讲了代码继承,多态操作以及接口语法。

1. 继承

  1. 定义:面向对象中,涉及对象过多时容易出现重复行为,为了避免这种情况,就可把重复的部分写成父类,由子类来继承父类。

  2. 关键字:

  • 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. 抽象方法、抽象类

  1. 定义:如果某个方法区块中真的没有任何程序代码操作,可以定义为抽象类,定义不完整的类就不能用来生成实例,(ps:内含抽象方法的类也一定要定义为不完整的抽象类,在工作中如果还有些方面没有确定,就可以调用抽象方法,等到平台确定后,再对代码进行符合这个平台的完善操作)
  2. abstract:抽象类以及方法需要用abstract标示该方法,如public abstract void fight

     3.  java.lang.object:任何类的最上层父类一定就是java.lang.object,因此Object数组可以来收集各种类型的对象。

     4.  instanceof:左操作数为对象,右操作数是类,可以用来判断对象是否由某个类创建

3. 接口

  1. 使用interace关键字定义,类要操作接口,必须使用implements关键字,对接口中定义的方法有两种操作方式,一是操作接口中定义的方法,二是再度将该方法表示为abstract。操作接口表示“拥有行为”,不再是“是一种”的关系。

  2. 行为的多态:与继承类似,也可以让一个对象强行扮演某种行为。

  3. 接口语法细节: 接口中的方法没有操作时,一定得是公开并且抽象。
    在interface接口中常常可以定义枚举常数(例:public static final int),实际上,在interface接口中也只能定义public static final的枚举常数,并且一定要使用=指定值,否则就会编译错误。个人感觉枚举常数在表达意思上更清楚一些,便于程序员读懂程序。接口也可以继承接口。

4. 其他

    1. 匿名内部类:主要是在临时继承某个类或操作某个接口并建立实例的需求(例:Some some=new Some(){};
    2. 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  

以上是关于20145123刘森明《Java程序设计》第四周学习总结的主要内容,如果未能解决你的问题,请参考以下文章

20145123刘森明《Java程序设计》第二周学习总结

20145123刘森明《Java程序设计》第五周学习总结

201671010135 2016-2017-2 《Java程序设计》学到第四周出现的问题

念整数——mooc《零基础学Java语言》-(浙大翁凯)第四周编程题

201671010103 2016-2017-2 《Java程序设计》第四周学习心得

201671010122 2016-2017-2 《JAVA程序设计》第四周JAVA学习反思