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.3 Fruit类还继承了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周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. 身在魔都的她,该不该继续"坚持"前端开发?

    一 这个女孩儿,是我很好很好很好的一位朋友,也是中学的同学,去年从她的本科大学毕业,毕业后由于没找到合适的工作而选择去培训机构培训了比较火爆的前端开发,之后去了上海找工作,但是由于一些原因在从上一家公 ...

  2. 社群系统ThinkSNS V4.5.29 APP更新发布,新增用户认证及系统消息

    社群系统ThinkSNS V4版本移动端APP将于7月29日更新发布,本次更新修复部分bug,最主要是增加了移动端APP的用户认证功能,以及添加了系统消息,为V4.5.29版本发布.这两个功能PC端的 ...

  3. Android开发中小知识

    1. Eclipse中代码对齐的快捷键:Ctrl+Shift+F 2.API打开显示“已取消到该网页的导航”——解决办法:右键文件属性,点击解除锁定即可

  4. Mac实用操作技巧(五)

    让其他人以游客方式登录你的Mac 当有一个哥们对你说:"嘿,把你Mac借我一下,我有点事需要用."这时你肯定不希望自己Mac上保存的资料毫无保留的呈现在别人眼前,那和脱光了衣服站在 ...

  5. 配置Tomcat

    目前有很多网站使用jsp的程序编写,所以解析jsp的程序就必须要有相关的软件来完成.Tomcat就是用来解析jsp程序的一个软件. 安装tomcat Tomcat的安装分为两个步骤:安装JDK和安装T ...

  6. Android手机客户端测试点(全)

    网上看到一个整理比较完善的手机客户端测试:

  7. Java连接数据库的4中方式详解

    Java连接数据库的方式有多种:根据所需要的不同数据库驱动分,分为四种: 1:1类驱动.这就是JDBC-ODBC桥的方式. 但这种方式不适合程序的重用与维护,不推荐使用.需要数据库的ODBC驱动. 2 ...

  8. Git 默认不区分大小写

    背景: 通过代码规范,修改了包名为全小写(修改了文件夹目录),但发现push后,git服务器的文件夹目录还是为大写 解决方法: git默认是不区分大小写的,意思是你修改一个文件名/文件夹的时候,git ...

  9. BotVS开发基础—2.11 API绘制图表

    代码 import time chart = { '__isStock': True, # 标记是否为一般图表,有兴趣的可以改成 false 运行看看. 'tooltip': {'xDateForma ...

  10. 问题: 数据流中位数 求解 时间复杂度度 java

    今天练习了一题: 数据流中位数 问题描述:数字是不断进入数组的,在每次添加一个新的数进入数组的同时返回当前新数组的中位数. 案例: 持续进入数组的数的列表为:[1, 2, 3, 4, 5],则返回[1 ...