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 ...
随机推荐
- HTML 超链接 表格
1...超链接 <a href="网址" target="_blank"> 被点击的文字</a> 如果把 target 属性设置为&qu ...
- Git 深入浅出
如果你是一个开发人员,想用上这个世界上目前最先进的分布式版本控制系统,那么,赶快开始学习吧!(耐心读下去,收获满满) Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git ...
- javascript面向对象属性函数用法(defineProperty与getOwnPropertyDescriptor)
defineProperty用于设置一个对象的属性描述符,属性描述符有4个:[[Configurable]], [[Enumerable]], [[Writable]],[[Value]] 当一个属性 ...
- 使用bootstrap网格系统自适应盒子宽度时保持所有盒子高度一致。
使用了bootstrap网格系统的好处是很容易便实现了响应式布局,盒子可以根据设置的样式,随着屏幕的大小改变而自动改变宽度,但是也存在一个问题,那就是盒子的高度是由盒子的内容决定的,如果盒子里的内容不 ...
- SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)
原文链接:http://www.powerxing.com/sql-join/ 总的来说,四种JOIN的使用/区别可以描述为: left join 会从左表(shop)那里返回所有的记录,即使在右表( ...
- 集合-TreeSet-Comparator
package com.bjpowernode.tree2; public class Student { private String name; private int age; public S ...
- html&css笔记(2)
第9章 用background-image属性为任何元素添加背景图片,用url()标识背景位置,它落在背景颜色之上,所以类似于背景颜色,它位于边框之内 p380 可以指定任一边框(上.下.左.右)的样 ...
- SQl语句收藏(转)
/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysq ...
- 【BZOJ3262】陌上花开 (CDQ分治+树状数组+排序)
Time Limit: 3000 ms Memory Limit: 256 MB Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现要对每 ...
- Andrew Ng机器学习课程笔记--week11(图像识别&总结划重点)
一.内容概要 Photo OCR Problem Decription and pipeline(问题描述和流程图) Sliding Windows(滑动窗口) Getting Lots of Dat ...










