201521123002 《Java程序设计》第4周学习总结
1. 本周学习总结
2. 书面作业
1.注释的应用
使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)
参考文章
Eclipse添加注释简介
Eclipse注释模板设置详解
答:进行注释主要有两种方法:
1.一种是老师上课用到的手动注释再运用一些标签
显然这样有些麻烦。有没有自动生成的办法呢?回答是有的。
2.把光标放在要注释的类或方法上,按快捷键alt+shift+j
or source》Generate Element Comment,但是这样的注释格式是系统默认的较为粗暴简单,没关系我们还可以自己进行格式修改。
打开:Window->Preference->Java->Code Style->Code Template 然后展开Comments节点,选中你要添加注释的类型,然后点击edit
在pattern里按“ctrl“+”/”键,选择要添加的种类,例如日期,作者、时间、返回类型等等……
设置好以后,会在上图的pattern下生成相应代码
现在用方法二来对之前写过的类和方法进行注释
对Rectangle类进行注释
对setname方法进行注释
对getPerimeter方法进行注释
2.面向对象设计(大作业1,非常重要)
2.1将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字,参考QQ群中PPT的范例)
答:最近在学习java,决定上当当网上买一些参考书,在搜索栏输入java,就会出现8050本有关java的书籍,点击一本查看具体信息,有书名、作者、价格、出版社、出版日期还有简介,觉得这本书不错加入购物车,想多了解一下这个作者的其他书籍,点击作者弹出一个界面显现作者其他的书籍,又选了一本加入购物车。点击购物车,就会看到刚刚选中的书本,发现总价有点贵,打算先买最想要的那本,点击删除了一本书。点击结算,弹出订单界面要求输入收货地址,提交订单,支付。
2.2通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。
答:如图
2.3尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)
参考资料:
UML类图
面向对象案例-借款者姓名地址.zip
3.ManagerTest.zip代码分析
分析ManagerTest.zip中的代码,回答几个问题:
3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。
答:Manager类 extends Employee类,
复用的方法:
图中super可知服用了父类的
复用的属性:
3.2 Employee
类及其子类Manager
都有getSalary方法,那怎么区分这两个方法呢?
答:用super来区分getSalary(),super.getSalary()是父类的。
3.3 文件第26行e.getSalary()
,到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。
答:ppt中有这样一句话
对于子类重写的方法,JVM根据调用该方法的实际对象的类型来决定选择调用哪个方法。
现在我们具体分析所给材料:
可知对于staff[0]调用的是Manager的getSalary方法,staff[1]、[2]调用的是Employee中的getSalary方法。
3.4 Manager
类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?
答:我们使用继承就是为了避免代码的冗长,用super可是使代码变得更叫简洁而且提高了代码的效率,学到目前尚未发现用super有什么坏处。
4.Object类
4.1 编写一个Fruit
类及属性String name
,如没有extends自任何类。使用System.out.println(new Fruit());
是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?
答:这种题目就放到eclipse里试一下
结果显示:
如过没有继承任何类,则继承的是Object类,Object类是所有类的父类,Fruit调用的是Object本身的toString方法。
查看Object本身的toString方法的源代码:
输出对象所属的类名和散列码。
4.2 如果为Fruit
类添加了toString()方法
,那么使用System.out.println(new Fruit());
调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)
答:用eclipse自动生成一个toString方法,如果要用父类的toString方法,可以用super这个关键字
结果为:
4.3 Fruit类还继承了Object
类的eqauls
方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true
。(使用代码证明你自己覆盖的eqauls方法是正确的)
答:查看源代码
Object类中equals方法用来判断两个对象是否具有相同的引用。
然而,对多数类来说这种判断意义不大。
所以子类经常覆盖其equals方法,对其内容进行比对。
编写equals有两种方法一种可与用eclipse自动生成但是它还需要稍微的修改一下,不然不会忽略大小写,另一种就是自己编写啦
public boolean equals(Object object) {
if (this == object)
return true;
if (!(object instanceof Fruit))
return false;
Fruit fruit = (Fruit) object;
if (this.name == null) {
if (fruit.name != null)
return false;
} else if (!this.name.equalsIgnoreCase(fruit.name))
return false;
return true;
}
运行结果
5.代码阅读:PersonTest.java(abstract、多态)
5.1 画出类的继承关系
答
5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因
答:运行不出来
那就说说自己的分析结果
创建一个长度为4的Person数组,age升序
Student类和Employee类是继承自Person类,而Manager类和Programmer类是继承自Employee类的,
那么Manager类和Programmer类有两成嵌套
5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?
答:super构造函数是调用了父类的构造函数,不可以,会出现错误,因为去掉super本来可以调用父类的无参构造函数,但是没有无参构造函数所以会出现错误
5.4 PersonTest.java
中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?
答:这里体现了多态
如果说我觉得多态有什么好处,一时半会好像还说不上来,可能是更灵活,代码不会显的太过冗长,提高代码效率等,查查资料发现那些讲的概念对我来说还是有些抽象,继续学习吧
多态来自继承,是继承的发展,继承是子类继承父类,而多态是父类的引用可以调用子类的对象。
参考文件:PersonTest.java
3. 使用码云管理Java代码
4. 实验总结
题目集:jmu-Java-03-面向对象1-基础-封装继承 中的
函数(4-1, 4-2, 4-3,4-4较难选做)
编程(5-4, 5-5, 5-6)
这次题目看起来有点多,但是认真去做还是发现不会特别难,
1.都是对新学的内容的巩固,这题用到了继承,可以抽象一个类,然后运用sumAllArea和sumAllPerimeter方法。
2.这题按照题目要求认认真真一步一步下来就好,其中eclipse可生成很多的代码节省了不少时间,然后对contain方法也进一步熟悉,但是输出格式还是有些问题,比如eclipse自动生成的是按照属性从上到下的顺序,但是如果我编写的时候没有按照输出的格式编写就会导致输出错误。这个问题还是比较难发现的,所以要小心。
3.没什么大问题,就是对覆盖的熟悉吧,慢慢做,一步一步来。
201521123002 《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 ...
随机推荐
- 在windows平台下electron-builder实现前端程序的打包与自动更新
由于8月份上旬公司开发一款桌面应用程序,在前端开发程序打包更新时遇到一些困扰多日的问题,采用electron-builder最终还是得到解决~ 以下是踩坑的过程及对electron打包与更新思路的梳理 ...
- MAC下安装MAMP的Mongodb
首先安装Mongodb服务端: 1.brew install mongodb 2.修改 vim /usr/local/etc/mongod.conf文件,db路劲 3.创建.修改/data/db,并为 ...
- [算法题] Remove Duplicates from Sorted Array
题目内容 本题来源于LeetCode Given a sorted array, remove the duplicates in place such that each element appea ...
- POSTMAN-REST Client
下载方式:翻.墙安装 #使用的时候不用翻.墙 下载地址:https://chrome.google.com/webstore/search/postman%20rest%20client Po ...
- 无插件VIM编程技巧(网摘)
无插件VIM编程技巧 原文出处:[陈皓 coolshell] 相信大家看过<简明Vim教程>也玩了<Vim大冒险>的游戏了,相信大家对Vim都有一个好的入门了.我在这里把我日常 ...
- BZOJ 3028 食物 生成函数
Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数.他这 ...
- 接口测试之soapUI(WebService)
一.WebService介绍 WebService是一种跨编程语言和跨操作系统平台的远程调用技术,XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术. 1)XML+X ...
- mapper.xml是怎样实现Dao层接口
上午写了一个简单的 从xml读取信息实例化一个Bean对象.下午就开始想mybatis是怎么通过xml文件来实现dao层接口的,一开始想直接用Class.forName(String name)然后调 ...
- Cannot convert 0 of type class java.lang.Integer to class java.lang.Boolean
org.apache.catalina.core.ApplicationDispatcher invoke SEVERE: Servlet.service() for servlet jsp thre ...
- 利用JavaScript来切换样式表
切换样式表 html页 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...