zoukankan      html  css  js  c++  java
  • 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  
  • 相关阅读:
    深入Nginx
    tornado django flask 跨域解决办法(cors)
    svn版本库目录结构
    【转】如何彻底删除SVN中的文件和文件夹(附恢复方法)
    【转】支付宝WAP支付接口开发
    svn密码 在服务端 到底是明文保存,还是密文保存
    简简单单删除所有.svn目录
    【转】在Eclipse中使用JUnit4进行单元测试(高级篇)
    【转】 在Eclipse中使用JUnit4进行单元测试(中级篇)
    【转】在Eclipse中使用JUnit4进行单元测试(初级篇)
  • 原文地址:https://www.cnblogs.com/Lexington/p/5327130.html
Copyright © 2011-2022 走看看