201521123074 《Java程序设计》第4周学习总结
1、本周学习总结

这次用XMind画的图,果然比百度脑图好用一点。
2、书面作业
Q1、注释的应用
使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)
- 类注释
- 方法注释
**Q2.面向对象设计(大作业1,非常重要)
2.1 将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字,参考QQ群中PPT的范例)
2.2 通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。**
- 比方说想要在淘宝上买一条裙子吧。首先打开淘宝网。先随便看看淘宝广告上的优惠打折新品什么的,后来进入正题,在搜索栏输入
裙子,会跳出各种各种裙:连衣裙、长裙、半身裙。。就索性直接打开裙子这一大类,然后就有各种分类:品牌、裙长、选购热点。。。还会有相关引索:是不是想找花裙子、修身打底裙子。。往下开始看商品的时候又可以进行排序搜索:按照人气、销量、信用、价格。。。点开自己比较喜欢的裙子,旁边就会展示这条裙子的各种详细信息:价格、运费、尺码、颜色。。。比较重要的还有商品评价。然后终于开开心心添加了很多裙子进购物车,进入购物车查看,就有很多商品在里面了,购物车里也会显示商品的主要信息,价格是最主要的,然后再购物车里进行各种操作,删除、添加、合计之后就结算付款输入自己的收获信息即算在淘宝上完成一次购物了。- 是购买者在用这个系统。
Q3.ManagerTest.zip代码分析
分析ManagerTest.zip中的代码,回答几个问题:
3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。
3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?
3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。
3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?
- 首先明白代码复用的含义:子类继承父类,则子类无需无需重新编写相同的代码。
- 如何区分:两个方法虽然名称相同,但是具体实现却不相同,Manager类对getSalary方法进行了重写。子类中可以重新定义父类中已有的方法,从而体现出子类自己的行为。
//Manager类的getSalary方法
public double getSalary()
{
double baseSalary = super.getSalary();
return baseSalary + bonus;
}
//Employee类中的getSalary方法
public double getSalary()
{
return salary;
}
- JVM根据调用该方法的实际对象的类型来决定选择调用哪个方法。
如图所示,staff【0】是调用的Manager类的getSalary方法,有额外的bonus。
staff【1】、staff【2】都是调用Employee类的getSalary方法,纯工资无bonus。- 好处:最直接的就是可以少写代码呀,很棒的。直接复制粘贴的话,直观是直观了,但是会是代码变得很冗长,本来可以化繁为简的达到统一目的,不必再多此一举重新粘贴重复的代码。所谓大道至简嘛。
**Q4.Object类
4.1 编写一个`Fruit`类及属性`String name`,如没有extends任何类。使用`System.out.println(new Fruit())`;是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?
4.2 如果为`Fruit`类添加了`toString()`方法,那么使用`System.out.println(new Fruit())`;调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)
4.3 Fruit类还继承了`Object`类的`eqauls`方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回`true`。(使用代码证明你自己覆盖的eqauls方法是正确的)
4.4 在4.3的基础上使用`ArrayList fruitList`存储多个fruit,要求如果fruitList中已有的fruit就不再添加,没有的就添加进去。请编写相关测试代码。并分析ArrayList的`contatins`方法是如何实现其功能的?**
> - 在Eclipse上操作一下。如图




可知`System.out.println(new Fruit())`是调用了`Fruit`的`toString()`方法。该方法的代码是从`Object.class`中来的。实现了将对象表现输出的功能。
>- 父类的toString()不会消失。代码实现如图。 
>- Object类的equals()方法源码如图。
功能有点像String类里的“==”,用来比较“地址”是否相同。若两个不同对象进行比较,即使内容相同,也会输出“fasle”。
class Fruit {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Fruit other = (Fruit) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
public class lala {
public static void main(String[] args) {
Fruit a=new Fruit();
Fruit b=new Fruit();
a.setName("a");
b.setName("a");
System.out.println(a==b);
System.out.println(a.equals(b));
}
}

Q5.代码阅读:PersonTest.java(abstract、多态)
5.1 画出类的继承关系
5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因
5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?
5.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?
- 预计输出就是根据年龄大小排序(从小到大)输出四个对象。
输出结果:
分析:Person类是abstract修饰的,只能当爸爸。Person类在这个代码里是爸爸,Student类和Employee类是它的儿子,而Programmer类和Manager类又是Employee类的儿子,输出就是按照每个类重写的toString()方法依次输出,所以,Student类和Employee类有一层toString,Programmer类和Manager类有两层toString。- 作用是继承父类构造函数方法,因为有些属性是重复一样的,直接继承父类就可以少写很多代码。去掉不行,因为去掉后系统会自动调用父类的无参构造函数,而此时父类没有无参构造函数,编译出错。
- 多态性:相同的形态,不同的行为(不同的定义)
-相同的方法名,不同的实现
-父类类型变量可以引用子类对象
代码体现在:每个类对toString()方法的不同实现。如:
多态的好处: 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。
多态和继承关系:继承是多态的基础,有了继承,才能有多态。
3. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

4. PTA实验
题目集:jmu-Java-03-面向对象1-基础-封装继承 中的
函数(4-1, 4-2, 4-3,4-4较难选做)
编程(5-4, 5-5, 5-6)
一定要有实验总结
- 对Employee的company属性的比较。要考虑传入为null的情况。如果company不为null且传入为null,返回false.
- 编写double sumAllArea方法输出形状数组中的面积和和double sumAllPerimeter方法输出形状数组中的周长和。需要用到多态的方法。
- 用super关键字调用父类方法时,该代码语句应该放在子类构造函数的第一行。
201521123074 《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 ...
随机推荐
- 【性能测试工具】- ApacheBench
优点:提供的测试结果信息更完备:缺点:每次只能测试一个链接 概述: ab全称是ApacheBench,是 Apache 附带的一个HTTP性能测试小工具,可以同时模拟多个并发请求. 安装: Apach ...
- Android studio 使用问题汇总
使用android studio也有一段时间了,汇总了一下这段时间内遇到一些常见问题 一.字体大小问题 在android studio的使用过程中没有发现类似于Eclipse中的font选项,调节字体 ...
- 关于VS AddIn的注册
使用VS2010创建addin工程时,如果选择的开发语言是unmanaged c++,以addin为后缀的XML描述文件就不起作用了.这种情况下addin通过注册表来实现注册功能.实际可在如下位置找到 ...
- 一个基于ES6+webpack的vue小demo
上一篇文章<一个基于ES5的vue小demo>我们讲了如何用ES5,vue-router做一个小demo,接下来我们来把它变成基于ES6+webpack的demo. 一.环境搭建及代码转换 ...
- 我学习go的五个感悟(译)
我学习go的五个感悟(译) 原文 5 things about programming I learned with Go By MICHAŁ KONARSKI Go在最近一段时间内开始变得十分流行. ...
- 在学习泛型时遇到的困惑经常与func<T,U>混淆
在学习泛型时遇到的困惑经常与func<T,U>混淆,总认为最后一个值是返回类型.现在区分一下,原来问题出在泛型委托上. C#委托的介绍(delegate.Action.Func.predi ...
- 四种JavaScript隐式类型转换的总结
一般存在四种情况,JavaScript会对变量的数据类型进行转换. 目录 * if中的条件会被自动转为Boolean类型 * 会被转为false的数据 * 会被转为true的数据 * 参与+运算都会被 ...
- 使用webpack-dev-middleware 和 webpack-hot-middleware 配置一个dev-server
关于Webpack的资料教程网上已经数不胜数,但是对手动配置一个Express server的确不多,于是我对此进行着重的了解一番. webpack-dev-middleware和webpack-ho ...
- 003-0.6632是float/Float/double/Double中的哪个?
应该是float,最后两个是包装类,这里应该安装基本类型去看待. 而java的浮点型默认是double型,如果希望生成一个float型的浮点数则需要在这个值的后面紧跟f和F.
- Python有哪些高大上的项目?
Python作为程序员的宠儿,得到了越来越多人的关注,使用Python进行应用程序开发的越来也多.那么,Python有哪些高大上的项目?这里有十个: 1.NuPIC 它是一个以HTM学习算法为工具的 ...










