20145302 《Java程序设计》第四周学习总结

教材学习内容总结

第六章

  • 继承共同行为
  1. 面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承。
  2. 程序代码重复在程序设计上就是不好的信号,多个类间出现重复的程序代码时,设计上可考虑的改进方式之一,就是把相同的程序代码提升为父类。
  3. 在java中,继承时使用extends关键字,private成员也会被继承,只不过子类无法直接存取,必须通过父类提供的方法来存取(若父类愿意提供访问方法的话)。
  • 多态与is-a
  1. 在java中,子类只能继承一个父类,并且子类与父类之间有一种is-a的关系。
  2. 多态,抽象的说,就是使用单一接口操作多种类型的对象。
  • 重新定义行为在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,这称为重新定义(Override)。在重新定义父类中某个方法的时候,子类必须撰写与父类方法中相同的签署。
  • 抽象方法、抽象类如果某个方法区块中真的没有任何程序代码操作,可以使用abstract标示该方法public abstract void fight,定义不完整的类就不能用来生成实例,内含抽象方法的类也一定要定义为不完整的抽象类,子类继承抽象类,对于抽象方法,一种是继续标示其为抽象类,另一种就是操作抽象方法。
  • protected成员java中有publicprotectedprivate三个权限关键字,但实际上有四个权限范围。
  • 重新定义的细节
  1. 如果想取得父类中的方法定义,可以在调用方法前,加上super关键字。
  2. 重新定义方法要注意,对于父类中的方法权限,只能扩大不能缩小。
  3. 在JDK5后,重新定义方法时,如果返回类型是父类中方法返回类型的子类,也可以通过编译。
  • 再看构造函数在创建子类实例后,会先进行父类定义的初始流程,在进行子类定义的初始流程,如果子类构造父类函数中没有指定执行父类中哪个构造函数,默认会调用父类中无参数构造函数如果父类中定义了构造函数,子类构造函数时就要注意调用父类中的哪个函数。
  • 再看final关键字
  1. 如果class前使用了final关键字定义,那么表示这个类是最后一个了,不会再有子类,也就是不能被继承。
  2. 定义方法时,也可以限定该方法为final,这表示最后一次定义方法了,也就是子类不可以重新定义final方法。
  • java.lang.object
  1. 如果定义类时没有使用extends关键字指定继承任何类,那一定是继承java.lang,Object
  2. 在java中,任何类追溯至最上层父类,一定就是java.lang.Objet
  • 垃圾收集
  1. 对于不再有用的对象,JVM有垃圾收集机制,收集到的垃圾对象所占据的内存空间,会被垃圾收集器释放。
  2. 在执行过程中,无法通过变量参考的对象,就是GC认定的垃圾对象。
  • 再看抽象类在不确定执行环境的时候,可以先创建出ConsoleGame实例,执行go()方法过程中调用到print()nextInt()println()等方法时,都是执行ConsoleGame中定义的流程。

第七章

  • 接口定义行为
  1. 对于定义行为,可以使用interace关键字定义,接口中的方法不能操作,直接标示为abstract,而且一定是public
  2. 操作某接口时,对接口中定义的方法有两种操作方式,一是操作接口中定义的方法,二是再度将该方法表示为abstract
  3. 继承会有“是一种”关系,而操作接口表示“拥有行为”。
  • 行为的多态与继承相同,也可以让一个对象强行扮演(cast)某种行为,与多态相同,只要是操作同一个接口的类都可以拥有接口的行为,可维护型也同时得到了较大的提高。
  • 解决需求变化在java中类可以操作两个以上的类,可以同时继承某个类并操作某些接口;于此同时,java中接口可以继承自另一个接口,也就是继承父接口行为,再在子接口中额外定义行为。
  • 接口的默认可以使用接口枚举常数,只能定义为public static final,如果有两个接口都定义了方法,操作的两个接口的类并不会有错误,照样会通过编译,所以要在设计时注意一下。
  • 使用enum枚举常数enum实际上定义了类,而enum中列举的常数,实际上是public static final,而且为枚举类型实例,无法撰写程序直接实例化枚举类型,因为构造函数权限设定为private,只有类中才可以实例化。

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

  • 这两章的联系比较紧密,一定得把前方的知识都搞懂了,循序渐进才能一步步的将代码看懂,这就很尴尬了,函数各种调用,在学习状态不好,精神疲惫的时候是无法参透代码的含义的,子类,父类,继承,接口,多态,枚举常数等含义都要反复的看,否则不好理解。

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

  • 问题在模仿Game游戏代码时,我将Game中的游戏代码都放到了一个包里,给“Role”、“RPG”等命名时加上了数字编号,结果发现fight()无法使用。
  • 解决过程我发现,随着类名称的改变,自己在模仿书上的代码的同时应该注意相对应的修改一些代码,才可以正确的调用函数。而且改变了文件的包的位置的时候,注意修改import偷懒的那个包的地址,包的嵌套中间用.隔开。

本周代码托管截图

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

  • 这周的学习任务很繁重,而且更加抽象了,而且函数各种调用,不太容易看懂,必须得细心。
  • 我发现,都到第七章了,良葛格的好多注释还是“无聊的语法示范”,说明现在还在学习很基础的知识,为了之后较熟练的应用java,我们应该扎实基础,一周两章感觉不太能消化完。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 1500行 15篇 400小时
第一周 10/10 2/2 10/10 基础知识
第二周 100/100 3/3 35/35 语法知识
第三周 300/300 4/4 60/60 了解对象

参考资料

20145302张薇《Java程序设计》第四周学习总结的更多相关文章

  1. 20145302张薇 Java第一周学习总结

    20145302张薇 <Java程序设计>第一周学习总结 教材学习内容总结 第一章 1995年,java被公认诞生.java第一开始为了消费性数字产品(如手机)而设计,所以java本身有很 ...

  2. Java程序设计第四周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...

  3. 20145302张薇 《Java程序设计》第二周学习总结

    20145302张薇 <Java程序设计>第一周学习总结 教材学习内容总结 第三章 第三章讲的是基本类型,变量,运算符和基本条件语句. 基本类型分为: 整数:short(2 byte),i ...

  4. 20145302张薇《Java程序设计》第三周学习总结

    20145302张薇<Java程序设计>第三周学习总结 教材学习内容总结 第四章 定义类 一个原始码中有多少类就会有多少.class文档. 标准类 使用java.util.scanner让 ...

  5. 20145302张薇《Java程序设计》实验三报告

    20145302张薇<Java程序设计>实验三:敏捷开发与XP实践 实验内容 使用git上传代码 使用git实现代码开发实践 实现代码的重载 使用git上传代码 git init git ...

  6. 20145302张薇《Java程序设计》实验二报告

    20145302张薇<Java程序设计>实验二:Java面向对象程序设计 使用TDD的方式设计实现复数类:Complex 测试代码 import org.junit.Test; publi ...

  7. 20145302张薇《Java程序设计》实验五报告

    20145302张薇 实验五:Java网络编程及安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验要求 基于Java Socket实现安全传输 基于TCP实现 ...

  8. 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结

    <面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...

  9. 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...

  10. 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...

随机推荐

  1. iOS消息推送证书创建过程

    iOS消息推送证书创建过程 一.创建证书请求 1.在mac上进行钥匙串访问(keychain) 2. 选择钥匙串访问>证书助理> 从证书颁发机构中请求一个证书,如图1所示 图1 3.输入你 ...

  2. k8s滚动升级

    为了服务升级过程中提供可持续的不中断的服务,Kubernetes 提供了rolling update机制,具体配置需要修改对应服务的yaml文件 参数解析: minReadySeconds: 100 ...

  3. CentOS添加PHP至环境变量

    一,修改/etc/profile文件在尾部添加 PATH=$PATH:/usr/local/php/bin export PATH PATH后面跟着是的php的执行文档路径,可以追加多个以冒号分割 e ...

  4. React中ref的用法

    在React数据流中,父子组件唯一的通信方式是通过props属性:那么如果有些场景需要获取某一个真实的DOM元素来交互,这时候就要用到React的refs属性. 1.可以给DOM元素添加ref属性 c ...

  5. Should You Build Your Own Backtester?

    By Michael Halls-Moore on August 2nd, 2016 This post relates to a talk I gave in April at QuantCon 2 ...

  6. Android技巧小结之新旧版本Notification

    最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API leve ...

  7. Python3: Command not found(Mac OS)

    1. 第一步:查看以下路径是否安装有 Python 3.x # 打开以下目录, 版本号有可能不同 cd /usr/local/Cellar/python/3.5.2_3/bin # 查看当前目录的内容 ...

  8. git学习——<三>git操作

    一.创建仓库 创建一个目录 mkdir repository cd到该目录下,初始化该版本库 git init 至此,版本库创建成功,可以在该文件夹下看到.git文件夹,ls -ah可以看到该文件夹. ...

  9. 网络爬虫值scrapy框架基础

    简介 Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 首先我们安装Scrapy. 其可以应用在数据挖掘,信息处理或存储历史 ...

  10. 《Python入门》Windows 7下Python Web开发环境搭建笔记

    最近想尝试一下在IBM Bluemix上使用Python语言创建Web应用程序,所以需要在本地搭建Python Web的开发测试环境. 关于Python的版本 进入Python的网站,鼠标移到导航条上 ...