201521123034《Java程序设计》第4周学习总结
1. 本周学习总结
1.1 尝试使用思维导图总结有关继承的知识点。

1.2 使用常规方法总结其他上课内容。
1.对类的设计:
- 将属性设计为私有
- 对属性初始化
- 类名和方法名要能体现他们的职责
2.识别类:
- 在一段故事中寻找到名词——创建相应的类
- 在一段故事中寻找到动词——建立方法
3.文档注释:
- 注释以/*开始,以*/结束
4.继承:(extends)
- 被继承的类称为父类
- 继承父类的类称为子类
- 继承时子类将获得父类的属性与方法,并具有自身特有的属性与方法。
5.多态:
- 相同的形态,不同的行为(不同的定义)
- 相同的方法名,不同的实现(父类类型变量可以引用子类对象)
- 通过 instanceof 可以判断父类引用所引用的对象实例的实际类型
6.抽象类:
- 用abstract关键字来修饰一个类时,该类叫做抽象类;
- 抽象类必须被继承。
- 抽象类不能被直接实例化。
参考资料:
百度脑图
XMind
2. 书面作业
1.注释的应用
使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)
| 对方法的注释 |


| 对类的注释 |


面向对象设计(大作业1,非常重要)
2.1 将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字,参考QQ群中PPT的范例)
答:网上商城购物:购物者在首先在首页浏览信息查询想要买的商品,查看商品的信息,包括商品价钱库存,还能浏览之前购买过该商品的买家的评论,接着登录会员(非会员要注册),登录成功后返回商品页面添加商品,添加后商品将会出现在购物车中,买家能在购物车中添加或删减想要买的数量,填写收货地址,最后提交订单,确认后付钱。
2.2 通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。
答:买家使用这个系统。(1)类:商品 属性:商品价钱、规格大小、库存量。(2)类:订单 属性:商品数量 方法:增添删除数量 (3)类:送货地址 属性:地址 方法:增加删除修改地址 (4)账户:用户名、密码 方法:注册账号、更改账号信息。

| 经老师提醒后修改了类图。在设计类时使用继承要谨慎,谨记is-a 这个关系 |
2.3 尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)
参考资料:
UML类图
面向对象案例-借款者姓名地址.zip
ManagerTest.zip代码分析
分析ManagerTest.zip中的代码,回答几个问题:
3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。

| employee 为父类 |

| manager 为子类 |

3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?
答:根据调用该方法的实际对象的类型来决定选择调用哪个方法。
3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。

| (已修改) |
```
答:从代码运行结果可以看到,staff[0}调用的是Manager的getsalary方法,staff[1]和staff[2]调用的是employee的getsalary方法。这是由于程序运行中根据对象声明类型来调用相应的方法(动态绑定)。
```
**3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?**
答:~~使用super调用父类的构造函数实现代码复用,减少代码的数量,避免代码冗余~~
| 修改: |
```
百度查询了一下DRY原则,即Don't repeat yourself,用自己的话来说就是程序中不要重复使用代码,这样做能达到提高工作效率,节省维护成本的目的。
```
**Object类**
**4.1 编写一个Fruit类及属性String name,如没有extends自任何类。使用System.out.println(new Fruit());是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?**

```
答:调用Fruit的toString()的方法;该代码是来自默认继承的父类Object;public String toString()返回该对象的字符串表示。
```
**4.2 如果为Fruit类添加了toString()方法,那么使用System.out.println(new Fruit());调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)**

(1)调用新增的toString方法。

(2)若要同时复用其父类,只要加上super.+父类方法,就能使用父类的方法。
4.3 Fruit类还继承了Object类的eqauls方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true。(使用代码证明你自己覆盖的eqauls方法是正确的)

答:(1)从object的源代码中可以看到其eqauls方法,功能是用来比较两个对象是否相等,相等则返回true,否则返回faulse。
答:(2)编写一个equals方法覆盖父类(代码截图如下)


4.4 在4.3的基础上使用ArrayList fruitList存储多个fruit,要求如果fruitList中已有的fruit就不再添加,没有的就添加进去。请编写相关测试代码。并分析ArrayList的contatins方法是如何实现其功能的?

arraylist中contains的源代码

答:从源代码中可以看出,在contains()方法传入的参数是null,则直接在list找有没有null元素,如果传入的参数不是null,则contains函数用调用equals方法,把传入的参数与list中每个元素做比较。
代码阅读:PersonTest.java(abstract、多态)
5.1 画出类的继承关系

5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因
答:自己推测:对一组person对象根据age由大到小排序,并且分别以emlopyee、student、programmer、mannager类的toString的形式输出
运行结果(下图)

分析:因为person为抽象类不能创建新对象不能实例化,所以数组中每个对象应该以他们所定义的类中的tostring的形式输出。
5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?
答:(1)作用是调用父类的方法。(2)不行。原因是去掉super,JAVA会默认调用父类的无参数的构造函数,而父类中没有无参数的构造函数,因此会报错。
5.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?
for (Person person : peoples) {
System.out.println(person);
}
答:(1)以上代码中体现了多态,每个对象输出的格式分别为其被定义的类中的toString。(2)多态的好处: 避免重复代码多,根据不同类型对象调用相同方法名输出不同结果。(3)多态和继承的关系:首先是因为有了继承才有父类和子类的关系,其次有了父类和子类的关系,子类才能调用父类的方法,而当调用父类的方法名和子类中的方法名相同时要根据对象类型来判断选择哪个方法,此时产生多态。
3. 码云代码提交记录

4. PTA实验
4-1 比较简单,巩固了如何编写toString方法。
4-2 一直编译错误不知道错在哪还在研究
5-4 首先是学习到如何获取对象的类型和父类类型,用hape.getClass()(获得类型),shape.getClass().getSuperclass()(获得父类型);其次学会使用抽象类并继承抽象类的用法。
5-5 这题主要是考察对equals的编写和用法,在写这题的时候用到了多个for循环但觉得代码好像有点冗余,要再考虑一下是否能使代码更简洁一些。
5-6 这题是对继承覆盖的综合练习,写的代码还有些错误,还在努力修改中。
另外可能自己理解能力比较差。。。在一些题目上需要花一些时间才能把题目读懂,有时候不太明白题目意思
201521123034《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 ...
随机推荐
- 写java代码遇到的一些问题
记录一些做论文实验写代码时遇到的问题. 数据库SQL语句方面: 1.java通过JDBC连接MySql数据库方法 参见:http://hzy3774.iteye.com/blog/1689525 2. ...
- WEB的进击之路-第一章 HTML基本标签(1)
一.HTML简介 超文本标记语言,标准通用标记语言下的一个应用. "超文本"就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 超文本标记语言的结构包括"头&q ...
- ELK5.0搭建部署
###关闭防火墙 service iptables stop ###定义vi=vim alias vi=vim vi ~/.bashrc alias vi='vim' yum -y install l ...
- Python下的OpenCV学习 02 —— 图像的读取与保存
OpenCV提供了众多对图片操作的函数,其中最基本的就是图片的读取与输出了. 一.读取图片 利用OpenCV读取一张图片是非常容易的,只需要用到 imread() 函数,打开shell或者cmd,进入 ...
- Myeclipse详细使用教程
Myeclipse详细使用教程.. /*+Shift+Enter(生成多行注释) /**+Shift+Enter(生成文档注释)-----------------问题:在编辑jsp的时候,如果光标移动 ...
- 阿里云ECS部署ES
背景 最近越来越多的公司把业务搬迁到云上,公司也有这个计划,自己抽时间在阿里云和Azure上做了一些小的尝试,现在把阿里云上部署ES和kibana记录下来.为以后做一个参考,也希望对其他人有帮助. 这 ...
- 利用CoreAnimation实现一个时间的进度条
(个人原创,转载请注明出处 http://www.cnblogs.com/pretty-guy/p/7460334.html) 在iOS中实现进度条通常都是通过不停的设置progress来完成的,这样 ...
- [2015-11-23]分享一个批处理脚本,创建iis站点及程序池
建站批处理 batch_createSites.bat @echo off rem 以管理员身份执行本脚本,可添加多条call 以建立多个站点 call path\to\createSites.bat ...
- Java内存模型_基础
线程之间的通信机制有两种: 1.共享内存:线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式的通信. 2.消息传递:线程之间没有公共状态,线程之间必须发送消息来显示的进行通信 同步:是指程 ...
- POI操作Excel的API注意点总结
本篇是关于POI.jar操作Excel的API注意事项 基数问题 说明:我使用的是POI 3.15版本的,在版本问题上建议大家,在版本稳定的基础上尽量使用高版本的 看过很多帖子在问一个问题:假设原来有 ...