201521123077 《Java程序设计》第4周学习总结
1. 本周学习总结
- 几种简单说明注释的使用
- 抽象类与抽象方法
- super调用父类的方法
2. 书面作业
Q1.注释的应用使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)
Q2面向对象设计(大作业)(借这道题顺便整理下正在做的安卓游戏的框架)
2.1 描述一个故事。(不得少于50字,参考QQ群中PPT的范例)
daiker是一只羊,有一天它发现自己在草原的半空中往下掉,
还来不及惊恐就发现自己毫发无损地站在了草原的微风中,
突然觉得肚子有点饿就低头吃了口腿边的草,
然后扭着身子向前方奔跑,一不留神掉进了猎人留下的陷阱,游戏结束。
2.2 通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。
“每一个元素都是一个完整的面向对象系统,他们几乎互不干涉,将他们一起放在Game这个更大尺度下的系统中时每一个对象都可以根据自身封装好的属性方法自动的根据运行时的各种情况表现出应有的反应”
故事中体现为:
world.addGravity(sheep) ->
sheep.gestureChange(sheep.status) ->
glass.isCollision()->
sheep.runForward() -> Trap.isCollision() -> GameFrame.status=GAME_OVER
2.3 尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)
Q3.ManagerTest.zip代码分析
分析ManagerTest.zip中的代码,回答几个问题:
3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。
- Manager的构造器中调用了父类构造器
- Manager的 getSalary
3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?
运行时根据类型自动判断具体类型并调用该类型的方法
3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。
staff[0]会调用Manager的方法,staff[1]和staff[2]调用Employee的方法
3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?
减少重复代码,提高代码可读性
而且如果我们不用super手动实例化父类,也会默认调用默认父类构造器自动实例化一个父类
Q4.Object类
4.1 编写一个Fruit类及属性String name,如没有extends自任何类。使用System.out.println(new Fruit());是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?
调用隐式继承自Object类的toString方法, 手动将该类的属性以想要的格式转换成一个String类供System.out.println方法使用
4.2 如果为Fruit类添加了toString()方法,那么使用System.out.println(new Fruit());调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)
被重写
@Override
public String toString() {
return "Fruit [name=" + name + ", getClass()=" + getClass()
+ ", hashCode()=" + hashCode() + ", toString()="
+ super.toString() + "]";
}
4.3 Fruit类还继承了Object类的eqauls方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true。(使用代码证明你自己覆盖的eqauls方法是正确的)
Object类equals方法是判断两个对象是不是同一个引用
4.4 在4.3的基础上使用ArrayList fruitList存储多个fruit,要求如果fruitList中已有的fruit就不再添加,没有的就添加进去。并分析ArrayList的contatins方法是如何实现其功能的?
源代码:遍历fruitList,调用该类型类的equals方法与list中每一个元素比较
Q5.代码阅读:PersonTest.java(abstract、多态)
5.1 画出类的继承关系
5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因
分析运行结果按照age属性升序排列
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
if (peoples[j].getAge() > peoples[j + 1].getAge()) {
Person temp = peoples[j];
peoples[j] = peoples[j + 1];
peoples[j + 1] = temp;
}
}
5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?
构造父类并给由父类继承来的属性赋值
在这里不可以,想要这样用的话要在这里的父类里添加一个默认构造器
5.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?
peoples[]是一个Person类型数组,但是它却分别被赋予了四种不同类型的子类型的对象
多态可以让你的程序更灵活,有继承才有多态
3. PTA实验总结及码云上代码提交记录
3.1本周PTA截图
3.2 实验总结
4-3:
4-4:
这两题有一个共同的地方就是会碰到对类变量是否为null的判断
总结是当涉及判断一个类变量的时候,要在每一步做好是否为null的检测,避免调用null的方法的空引用错误
其他的题目没什么好总结的了
201521123077 《Java程序设计》第4周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- iPhone 尺寸
http://tool.lanrentuku.com/guifan/ui.html 这是本人复制的链接,,
- <未来世界的幸存者> 读后感(现实篇和职业篇)
摘要: 前几天有幸看到阮老师的 <未来世界的幸存者)>,花了几晚的时间阅读完毕,内心受到了很大的触动,现在将感觉不错的地方记录下. 职业篇 1. 为什么雇佣制度对工人不利? 雇佣制度是一种 ...
- Linux - 简明Shell编程13 - 用户输入(UserInput)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 1 - arguments #!/bin/bash i ...
- 借助AMD来解决HTML5游戏开发中的痛点
借助AMD来解决HTML5游戏开发中的痛点 游戏开发的痛点 现在,基于国内流行引擎(LayaAir和Egret)和TypeScript的HTML5游戏开发有诸多痛点: 未采用TypeScript编译器 ...
- 关于修改了db2 instance下面文件夹权限导致的不可连接
前一段时间,我修改了db2inst1目录下的所有文件的权限,目的是方便其他用户访问和查看里面的文件信息.可是修改了之后,我用IBM data studio就始终连接不上数据库了. 查看了错误代码,看提 ...
- C++动态内存管理之深入探究new和delete
C++中程序存储空间除栈空间和静态区外,每个程序还拥有一个内存池,这部分内存被称为自由空间(free store)或堆(heap).程序用堆来存储动态分配的对象,即,那些程序运行时分配的对象.动态对象 ...
- 自定义DialogAlert消息框
效果: 一.新建类CommomDialog 继承Dialog public class CommomDialog extends Dialog implements View.OnClickListe ...
- perl的正则表达式
“小骆驼”的“正则表达式“部分学习总结: 一.匹配语法: 1.".":任意单字符(‘\n‘除外): 2.“*“:匹配前项0-n次: 3.“+“:匹配前项1-n次: 4.“?”:匹配 ...
- [目标检测]YOLO原理
1 YOLO 创新点: 端到端训练及推断 + 改革区域建议框式目标检测框架 + 实时目标检测 1.1 创新点 (1) 改革了区域建议框式检测框架: RCNN系列均需要生成建议框,在建议框上进行分类与回 ...
- 横排列表(li)的左右对齐
效果如下: HTML代码如下: <div class="overdiv"> <ul> <li>1</li> <li>2& ...