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周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Loadrunner错误 -27727: 下载资源时步骤下载超时 (120 seconds) 已过期

    由于压力大了,下载资源所用时间就长了,可以设置加大超时时间 运行时设置 Internet 协议--首选项--高级--选项 --General--步骤下载超时(秒) 把这个值从120改为更大,如300, ...

  2. [算法题] 3Sum Closest

    题目内容 Given an array S of n integers, find three integers in S such that the sum is closest to a give ...

  3. python爬虫url带中文解决方案之一

    import urllib2 urllib2.quote("呵呵哒") #输出 '%BA%C7%BA%C7%DF%D5'

  4. while补充,字符串和数字的内置方法

    一.while循环的补充 while True: name=input('please input your name: ') password=input('please input your pa ...

  5. 使用ActionBarActivity或者RxAppCompatActivity或者AppCompatActivity闪退的问题

    新建一个项目,Activity继承RxAppCompatActivity的时候,在页面跳转的时候会出现闪退的问题,一直都没有解决. 后面将两个父类全部改成activity,问题解决.但是有的时候必须使 ...

  6. 利用intellijidea创建maven多模块项目

    一.项目结构 multi-module-PRoject是主工程,里面包含两个模块(Module): web-app是应用层,用于界面展示,依赖于web-service参的服务. web-service ...

  7. 学问Chat UI(3)

    前言 上文学问Chat UI(2)分析了消息适配器的实现; 本文主要学习下插件功能如何实现的.并以图片插件功能作为例子详细说明,分析从具体代码入手; 概要 分析策略说明 "+"功能 ...

  8. JS针对pc页面固定宽度在手机展示问题 <meta ...>

    结合一些 网上大神级前端作品的 介绍 修改了一下自己的代码  做出了一个相对简单的缩放代码 1. <meta name="viewport" content="wi ...

  9. JQuery基础 接下来我将把我最近学习jQuery所做的笔记发布,希望对初学者有些许帮助,也方便自己以后复习

    jQuery简介 1.概念: jQuery是一个优秀的JavaScript库,而非JavaScript.它是轻量级的库2.兼容性:兼容css3,以及各种浏览器.3版本: 1.x-----------兼 ...

  10. Html5笔记之第四天

    属性 值 描述 accesskey character 规定访问元素的键盘快捷键 class classname 规定元素的类名(用于规定样式表中的类). contenteditable true f ...