20145302张薇《Java程序设计》第四周学习总结
20145302 《Java程序设计》第四周学习总结
教材学习内容总结
第六章
- 继承共同行为
- 面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承。
- 程序代码重复在程序设计上就是不好的信号,多个类间出现重复的程序代码时,设计上可考虑的改进方式之一,就是把相同的程序代码提升为父类。
- 在java中,继承时使用
extends
关键字,private
成员也会被继承,只不过子类无法直接存取,必须通过父类提供的方法来存取(若父类愿意提供访问方法的话)。
- 多态与is-a
- 在java中,子类只能继承一个父类,并且子类与父类之间有一种is-a的关系。
- 多态,抽象的说,就是使用单一接口操作多种类型的对象。
- 重新定义行为在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,这称为重新定义(Override)。在重新定义父类中某个方法的时候,子类必须撰写与父类方法中相同的签署。
- 抽象方法、抽象类如果某个方法区块中真的没有任何程序代码操作,可以使用abstract标示该方法public abstract void fight,定义不完整的类就不能用来生成实例,内含抽象方法的类也一定要定义为不完整的抽象类,子类继承抽象类,对于抽象方法,一种是继续标示其为抽象类,另一种就是操作抽象方法。
- protected成员java中有
public
、protected
、private
三个权限关键字,但实际上有四个权限范围。 - 重新定义的细节
- 如果想取得父类中的方法定义,可以在调用方法前,加上
super
关键字。 - 重新定义方法要注意,对于父类中的方法权限,只能扩大不能缩小。
- 在JDK5后,重新定义方法时,如果返回类型是父类中方法返回类型的子类,也可以通过编译。
- 再看构造函数在创建子类实例后,会先进行父类定义的初始流程,在进行子类定义的初始流程,如果子类构造父类函数中没有指定执行父类中哪个构造函数,默认会调用父类中无参数构造函数如果父类中定义了构造函数,子类构造函数时就要注意调用父类中的哪个函数。
- 再看final关键字
- 如果
class
前使用了final
关键字定义,那么表示这个类是最后一个了,不会再有子类,也就是不能被继承。 - 定义方法时,也可以限定该方法为
final
,这表示最后一次定义方法了,也就是子类不可以重新定义final
方法。
- java.lang.object
- 如果定义类时没有使用
extends
关键字指定继承任何类,那一定是继承java.lang,Object
。 - 在java中,任何类追溯至最上层父类,一定就是
java.lang.Objet
。
- 垃圾收集
- 对于不再有用的对象,JVM有垃圾收集机制,收集到的垃圾对象所占据的内存空间,会被垃圾收集器释放。
- 在执行过程中,无法通过变量参考的对象,就是GC认定的垃圾对象。
- 再看抽象类在不确定执行环境的时候,可以先创建出ConsoleGame实例,执行
go()
方法过程中调用到print()
、nextInt()
或println()
等方法时,都是执行ConsoleGame中定义的流程。
第七章
- 接口定义行为
- 对于定义行为,可以使用
interace
关键字定义,接口中的方法不能操作,直接标示为abstract
,而且一定是public
。 - 操作某接口时,对接口中定义的方法有两种操作方式,一是操作接口中定义的方法,二是再度将该方法表示为
abstract
。 - 继承会有“是一种”关系,而操作接口表示“拥有行为”。
- 行为的多态与继承相同,也可以让一个对象强行扮演(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程序设计》第四周学习总结的更多相关文章
- 20145302张薇 Java第一周学习总结
20145302张薇 <Java程序设计>第一周学习总结 教材学习内容总结 第一章 1995年,java被公认诞生.java第一开始为了消费性数字产品(如手机)而设计,所以java本身有很 ...
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- 20145302张薇 《Java程序设计》第二周学习总结
20145302张薇 <Java程序设计>第一周学习总结 教材学习内容总结 第三章 第三章讲的是基本类型,变量,运算符和基本条件语句. 基本类型分为: 整数:short(2 byte),i ...
- 20145302张薇《Java程序设计》第三周学习总结
20145302张薇<Java程序设计>第三周学习总结 教材学习内容总结 第四章 定义类 一个原始码中有多少类就会有多少.class文档. 标准类 使用java.util.scanner让 ...
- 20145302张薇《Java程序设计》实验三报告
20145302张薇<Java程序设计>实验三:敏捷开发与XP实践 实验内容 使用git上传代码 使用git实现代码开发实践 实现代码的重载 使用git上传代码 git init git ...
- 20145302张薇《Java程序设计》实验二报告
20145302张薇<Java程序设计>实验二:Java面向对象程序设计 使用TDD的方式设计实现复数类:Complex 测试代码 import org.junit.Test; publi ...
- 20145302张薇《Java程序设计》实验五报告
20145302张薇 实验五:Java网络编程及安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验要求 基于Java Socket实现安全传输 基于TCP实现 ...
- 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结
<面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...
- 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈
对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...
随机推荐
- iOS消息推送证书创建过程
iOS消息推送证书创建过程 一.创建证书请求 1.在mac上进行钥匙串访问(keychain) 2. 选择钥匙串访问>证书助理> 从证书颁发机构中请求一个证书,如图1所示 图1 3.输入你 ...
- k8s滚动升级
为了服务升级过程中提供可持续的不中断的服务,Kubernetes 提供了rolling update机制,具体配置需要修改对应服务的yaml文件 参数解析: minReadySeconds: 100 ...
- CentOS添加PHP至环境变量
一,修改/etc/profile文件在尾部添加 PATH=$PATH:/usr/local/php/bin export PATH PATH后面跟着是的php的执行文档路径,可以追加多个以冒号分割 e ...
- React中ref的用法
在React数据流中,父子组件唯一的通信方式是通过props属性:那么如果有些场景需要获取某一个真实的DOM元素来交互,这时候就要用到React的refs属性. 1.可以给DOM元素添加ref属性 c ...
- 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 ...
- Android技巧小结之新旧版本Notification
最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API leve ...
- Python3: Command not found(Mac OS)
1. 第一步:查看以下路径是否安装有 Python 3.x # 打开以下目录, 版本号有可能不同 cd /usr/local/Cellar/python/3.5.2_3/bin # 查看当前目录的内容 ...
- git学习——<三>git操作
一.创建仓库 创建一个目录 mkdir repository cd到该目录下,初始化该版本库 git init 至此,版本库创建成功,可以在该文件夹下看到.git文件夹,ls -ah可以看到该文件夹. ...
- 网络爬虫值scrapy框架基础
简介 Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 首先我们安装Scrapy. 其可以应用在数据挖掘,信息处理或存储历史 ...
- 《Python入门》Windows 7下Python Web开发环境搭建笔记
最近想尝试一下在IBM Bluemix上使用Python语言创建Web应用程序,所以需要在本地搭建Python Web的开发测试环境. 关于Python的版本 进入Python的网站,鼠标移到导航条上 ...