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 ...
随机推荐
- 记录初次使用tesseract的过程
目录 简介 安装tesseract 安装成功 python应用识别图片 简介 这个谷歌的识别项目早就听说了,使用之后发现,真的很厉害.写下初次简单使用的过程吧. 安装tesseract 谷歌的开源识别 ...
- IDEA整合日志框架Log4j2+Slf4j详细配置过程
日志框架这么多,他们之间到底是什么关系呢?笼统的讲就是slf4j是一系列的日志接口,而log4j2.logback是具体实现了接口功能的日志框架.现在的主流日志接口都使用slf4j,而日志的实现就见仁 ...
- HDU2256&&HDU4565:给一个式子的求第n项的矩阵快速幂
HDU2256 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2256 题意:求(sqrt(2)+sqrt(3))^2n%1024是多少. 这个题算是h ...
- react es6语法 之 => 箭头函数
参考:https://www.cnblogs.com/secretAngel/p/9699356.html (1).只有一个参数且只有一句表达式语句的,函数表达式的花括号可以不写let test = ...
- x86架构下的控制寄存器CR0-CR4
关于这几个寄存器,每次翻看intel手册都很不好找,干脆直接贴在这里吧!
- Flask路由系统与模板系统
路由系统 @app.route('/user/<username>') @app.route('/post/<int:post_id>') @app.route('/post/ ...
- oracle入门(6)——PL/SQL常用语法
[本文介绍] 本文不是”语法大全“,只是记录下作项目里自己常用的一些语法.方便查询. [语法] [输出] (1)输出语法 DBMS_OUTPUT.PUT_LINE( ) [定义] (1)定义变 ...
- js如何转义和反转义html特殊字符
“<”如何反转义为“<”,“>”如何反转义为“>”,下面就介绍如何用js来实现这种类似的操作. //HTML转义 function HTMLEncode(html) { var ...
- 2D游戏中的碰撞检测:圆形与矩形碰撞检测(Javascrip版)
一,原理介绍 这回有点复杂,不过看懂了还是很好理解的.当然,我不敢保证这种算法在任何情况下都会起效果,如果有同学测试时,发现出现错误,请及时联系我. 我们首先来建立一个以圆心为原点的坐标系: 然后要检 ...
- Jmeter(十)Linux下配置安装Jmeter及执行测试任务
一.安装JDK7.0版本 1.先卸载服务器自带的jdk软件包 # java -version #查看服务器是否安装过 # rpm -qa |grep gcj #查看服务器安装的jdk软件包信息 # y ...