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

1.2 使用常规方法总结其他上课内容。
Answer:
- 上课还讲了tostring的使用,般toString用于返回表示对象值的字符串;
- Object类中equals方法用来判断两个对象是否具有相同的引用;
- 散列码是由对象导出的一个整型值;
- 上课还是感觉跟天书一样,自身基础差比较笨吧,所以代码都不会打,头疼哦!
2. 书面作业
1.注释的应用:使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)

Q2面向对象设计(大作业1,非常重要)
2.1将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字);
Answer:要在网上购物,我们一般需要一台电脑或者手机,假如用的是电脑吧,当然要先打开浏览器,然后搜索购物平台,如果淘宝啊,当当啊,京东之类的,就拿淘宝举个例子吧,打开淘宝后

如果你想购物的话在界面左上角有个“亲,请登入”;要登入淘宝账号,如果没有呢,那就比较麻烦了,需要申请淘宝账号才能进行下一步购物操作了。登入后,在淘宝网页搜索栏里面搜索,例如搜索java;

网页里面就会有一些关于java这一本书的内容,例如价格呀,有没有包邮之类的信息,在网页的右上角还有可以选择七天退货,正品保障之类的,选好书本后,点击进去;

就可以选择立即购买或者加入购物车,如果选择立即购买,那就买啦,只是要记得填上你的地址哦!如果是选择加入购物车,那就可以到购物车界面去结算啦!如果你觉得发现加入购物车后不喜欢这本书了,那就可以直接在购物车里面删除这本书哦!
2.2通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。
首先我感觉应该要有一个登入类,因为进入淘宝后总是需要登入账号和密码才能够进行购物的嘛;然后应该还要有搜索类,进行搜索东西,根据输入的关键字进行搜索;还有应该有商品类,比如什么书本啊,手机之类的;还应该有个购物车类吧,进行结算,添加,删除的操作;还应该有价格排序,综合评价排序,商品是否正品保障,免邮之类的吧~(啊哈,瞎说的)。然后我感觉买完应该还有售后服务类,评价类吧~。
2.3尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)
public class Login{
private String username;
private String password;
}
public class Search{
public String word;
void search;
}
public class Goods{
public String books;
public String clothes;
public String phones;
...
}
public class Shopping car{
private void pay(){
};
private void add(){
};
private void delete(){
}
}
public class After-sales service{
private String evaluate;
private void sales return(){
}
}
3.ManagerTest.zip代码分析
分析ManagerTest.zip中的代码,回答几个问题:
3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。
Answer:
public Employee(String n, double s, int year, int month, int day)//Employee类,父类
{
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
hireDay = calendar.getTime();
}
class Manager extends Employe//Manager类,出现extends关键字,继承父类,为子类
{
/**
* @param n the employee's name
* @param s the salary
* @param year the hire year
* @param month the hire month
* @param day the hire day
*/
public Manager(String n, double s, int year, int month, int day)//Manager类
{
super(n, s, year, month, day);//super关键字调用父类
bonus = 0;
}
public double getSalary()
{
double baseSalary = super.getSalary();//super关键字
return baseSalary + bonus;
}
public void setBonus(double b)
{
bonus = b;
}
private double bonus;
}
3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?
Answer:ppt上说“对于子类重写的方法,JVM根据调用该方法的实际对象的类型来决定选择调用哪个方法。”; 然后,可以用super来区分父类的getSalary和子类的getSalary;举个例子:super.getSalary()就表示父类的getSalary()方法;
3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。
Answer:其实根据代码的运行结果,我们可以知道调用的是Manager类的getSalary;

(不出意外这题上课讲过的,然后模模糊糊的记得)。

该代码定义了一个employee类的staff数组,但是它将staff[0]定义为manage类中的boss,而staff[1]和staff[2]是employee类的。
3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?
Answer:Manager类的构造函数使用super调用父类的构造函数实现了代码复用,这样可以节约打重复代码浪费的时间,如果把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,会使人阅读起来更加麻烦,冗长。
4.Object类
4.1 编写一个Fruit类及属性String name,如没有extends自任何类。使用System.out.println(new Fruit());是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?
Anawer:

输出:

- 当我们直接输出某个对象的时候,会直接调用toString()方法;该代码是从object类来的。
- Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。(总而言之,object类就是所有类的爸爸!)
- 附上object类详解链接:http://baike.so.com/doc/5904392-6117294.html
4.2 如果为Fruit类添加了toString()方法,那么使用System.out.println(new Fruit());调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)
Answer:父类中的toString方法的代码肯定还存在的,如果没有了,那么其他类要调用父类的toString不就都要再重新写了吗!想要复用父类的toString用super啊!


4.3Fruit类还继承了Object类的eqauls方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true。(使用代码证明你自己覆盖的eqauls方法是正确的)
Answer:
public boolean equals(Object obj) {
return (this == obj);
}

eclipse自动生成hashcode()和equals()真的太棒了,我是真滴不会how to do!嘿嘿嘿!
5.代码阅读:PersonTest.java(abstract、多态)
5.1 画出类的继承关系

5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因
Answer:真正运行结果
Manager [bonus=12000.3, toString()=Employee [salary=90000.1, toString()=Person [name=Clark, adress=GE, phonenumber=111, email=111@mail.com, age=10, gender=mail]]]
Student [status=1, toString()=Person [name=wang, adress=110, phonenumber=15959, email=15959@163.com, age=18, gender=male]]
Employee [salary=1000.0, toString()=Person [name=zhang, adress=136, phonenumber=1360, email=1360@mail.com, age=21, gender=female]]
Programmer [allowance=50000.0, toString()=Employee [salary=100000.0, toString()=Person [name=Gates, adress=usa, phonenumber=911, email=911@com, age=59, gender=male]]]
- 分析:根据思维导图可以看出来总共有五个类,但是因为
abstract class Person,可以看出person是一个抽象类,所以分析其他的四个类;Employee类,Student类,Programmer类,Manager类四个类的toString()方法,我们可以发现他们具有统一的格式,就是输出自己特有的成员变量,然后调用父类的同名方法,但是Manager类和Programmer类父类Employee类继承了Person类,所以有两层嵌套!
5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?
Answer:super的作用是调用父类的构造函数;不行,如果子类构造函数没有显式地调用父类的构造函数,则自动调用父类默认无参构造函数,如果父类无相应无参构造函数,则会出错。
5.4 为什么Person中的getDescription要声明为abstract?
Answer:是我眼瞎了了,为什么找不到getDescription?
5.5PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?
Answer:多态性是指相同的形态,不同的行为(不同的定义)相同的方法名,不同的实现;父类类型变量可以引用子类对象(重要);很明显toString就体现了多态,形如:public class Employee extends Object{……};public class Manager extends Employee{……};public class Progammer extends Employee {……}就是多态。多态就是一个接口,使用不同的实例去执行不同的操作,好处就是增强程序的可扩展性及可维护性,使代码更简洁。个人感觉多态和继承没有什么关系,然后就顺便搜索了一下,不知道是否正确...(附上链接:http://wenda.so.com/q/1378229141068865?src=9999&cid-pre=1000204。)
3. 码云代码提交记录
- 在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图示;

4.4. PTA实验
- 题目集:jmu-Java-03-面向对象1-基础-封装继承 中的
函数(4-1, 4-2, 4-3,4-4较难选做)
编程(5-4, 5-5, 5-6) - 一定要有实验总结
Answer:要通过super来调用父类方法;用eclipse自动生成hashcode()和equals()方法真的好用!感觉还是需要多练吧,每次都花费大量时间在Java上,打代码能力还是超级无敌差,好多编程题还没做完,会尽快完成的,每次打代码都需要请教学霸,感觉自己真的弱爆了!!可能编程真的真的真的不适合我!长时间坐在电脑面前是真滴难受哦!fighting!
201521123111《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 ...
随机推荐
- 一个普通的 Zepto 源码分析(三) - event 模块
一个普通的 Zepto 源码分析(三) - event 模块 普通的路人,普通地瞧.分析时使用的是目前最新 1.2.0 版本. Zepto 可以由许多模块组成,默认包含的模块有 zepto 核心模块, ...
- pyhton购物程序
要求: 启动程序后,让用户输入工资,然后打印出带有序号的商品列表 用户输入商品序号购买相应的商品,或者输入 ' q ' 退出购买界面 选择商品后,检查余额是否足够,够则直接扣款,不够则提示余额不足 用 ...
- selenium更加高效的PageObject 对象操作代码
重新封装了的selenium代码,包括click事件,sendkeys事件,select事件,以及对readonly日期控件的处理 package com.common; import java.ut ...
- 配置Tomcat
目前有很多网站使用jsp的程序编写,所以解析jsp的程序就必须要有相关的软件来完成.Tomcat就是用来解析jsp程序的一个软件. 安装tomcat Tomcat的安装分为两个步骤:安装JDK和安装T ...
- Linux环境下安装禅道
1.下载禅道包 http://dl.cnezsoft.com/zentao/7.3/ZenTaoPMS.7.3.stable.zbox_64.tar.gz http://dl.cnezsoft.c ...
- Python下的OpenCV学习 01 —— 在Linux下安装OpenCV
一.OpenCV简要介绍 OpenCV是一个跨平台的计算机视觉库,可以运行在Windows.Linux.MacOS等操作系统上.OpenCV提供了众多语言的接口,其中就包含了Python,Python ...
- oracle中如何移动数据文件
a.shutdown immediate关闭数据库 b.在os下拷贝数据文件到新的地点 c.Startup mount 启动到mount下 d.Alter database rename fil ...
- myeclipse db browser 新建数据源
Myeclipse 新建数据源 一.打开myeclipse(打开了当我没说) 二.在window选项中找到show view ,点击other,输入db,选择DB Browser 三.在DB Brow ...
- Http2改造实践:statusText丢失问题
背景: 1.项目中的nginx由http1.1改造为http2, 2.代码中采用axios的interceptors做统一返回处理,对于系统逻辑性错误弹窗(例如:表单字段唯一性校验弹窗提示) 现象: ...
- oozie调用java实例------Java action
Oozie支持Java action ,Java action 会自动执行workflow任务中制定的java类中的 public static void main(String[] args)方法, ...