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 ...
随机推荐
- angular学习(七)-- Service
1.7 服务:Service 如果做过后台开发,那么对 Angular 中的服务就好理解多了. 在 Angular 中,服务的概念和后台的服务概念基本是一样的,差别只是在于技术细节. 服务是对公共代码 ...
- 社交系统ThinkSNS+ APP更新至V0.8.3---新增打赏、用户认证
一.ThinkSNS简介 目前社交系统ThinkSNS(简称TS)有两个版本并行: ThinkSNS V4----最新版本ThinkSNS V4.6.1,第一次发布时间为2015年7月15日,最近更新 ...
- Python2和Python3的一些语法区别
Python2和Python3的一些语法区别 python 1.print 在版本2的使用方法是: print 'this is version 2 也可以是 print('this is versi ...
- python——模块和包 需要注意的地方
一 模块 1.import import module: 将执行文件(module)的目录路径插入到sys.path的第一个位置 执行时: 1.创建新的名称空间 2.执行被调用的模块 第二次调用,不会 ...
- 【LeetCode】数组-2(628)-数组中三个数相乘最大
题目不难: 思路一(排序取两端) 先排序,最后三个数相乘即可.(很快就想到了,但是没想全面 [
- 语音激活检测(VAD)--前向神经网络方法(Alex)
这是学习时的笔记,包含相关资料链接,有的当时没有细看,记录下来在需要的时候回顾. 有些较混乱的部分,后续会再更新. 欢迎感兴趣的小伙伴一起讨论,跪求大神指点~ VAD(ffnn神经网络)-Alex t ...
- MySQL使用聚合函数查询
create table `t_grade` ( `id` int , `stuName` varchar (60), `course` varchar (60), `score` int ); in ...
- Linux上Oracle自动启停方案
环境 CentOS 6 x86_64, Oracle 11g R2 方案 Oracle在$ORACLE_HOME/bin目录下提供了dbstart和dbshut两个脚本来启动和停止Oracle.d ...
- Java 生产图片验证码
import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;impor ...
- ehcache memcache redis 三大缓存对比
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt268 最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今 ...

