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. css超简单实现div页面居中【适合做弹出框】

    1.前言 现在项目中用到弹出框的话大部分都是直接用控件的.不过有控件虽方便,但有时候会有冲突的地方.我上次用layui的弹出框控件,然后也用到了百度的编辑器uEditor,然后一切都好好的,结果编辑赋 ...

  2. 创建 macvlan 网络 - 每天5分钟玩转 Docker 容器技术(55)

    上一节我们准备好了 macvlan 的实验环境,今天在 host1 和 host2 中创建 macvlan 网络 mac_net1: 注意:在 host2 中也要执行相同的命令. ① -d macvl ...

  3. FPS手游如何脱颖而出?看《CF手游》的性能突破之路

    WeTest导读 俗话说:用户体验不谈性能就是耍流氓. 在PC游戏上的性能问题并没有那么明显, 加个内存换个CPU或者刷个主频就能轻松搞定:到了手游时代后情况则显得比较严峻,捉襟见肘的内存使得资源加载 ...

  4. JavaScript获取和创建元素

    1.JavaScript中获取元素 常用的获取document中元素的方法: 1) document.getElementById()  =>通过元素ID获取文档中特定的元素,如获取 id = ...

  5. 学习笔记TF049:TensorFlow 模型存储加载、队列线程、加载数据、自定义操作

    生成检查点文件(chekpoint file),扩展名.ckpt,tf.train.Saver对象调用Saver.save()生成.包含权重和其他程序定义变量,不包含图结构.另一程序使用,需要重新创建 ...

  6. 单文件文件上传到服务器(HTML5+js+Java)

    上传单文件到服务器 应公司要求,在HTML5页面上实现上传文件到服务器,对于一个还没毕业的实习生菜鸟来说,这可不得了-----不会,网上各种百度,找各种博客还是没解决,最后还是请教了公司的大神,人家给 ...

  7. 分享一个数据库工具DTOOLS

    整理电脑的时候发现一个好的工具——DTOOLS,他是我在09年左右写的一个数据库工具. 可以干什么呢? 我罗列一下: 1.全面的展示数据库字段情况 2. 迅速切换,展示数据库记录情况,不输语句,即点即 ...

  8. win7怎么更换锁屏壁纸

    win7怎么更换锁屏壁纸... -------------------------- 按键盘组合键“Windows+R”可打开“运行”窗口,输入 “gpedit.msc” 按回 ----------- ...

  9. dbUtils的基本使用

    dbUtils是对JDBC的完全封装,只需要导入连接池,添加sql语句,dbUtils就可以返回各种封装形式的结果集. 如果纯手动的话,在DAO层使用JDBC查询一个语句的话,需要以下几步: 1创建C ...

  10. Sass初学者超强十分钟入门

    ruby安装 因为sass依赖于ruby环境,所以装sass之前先确认装了ruby.先导官网下载个ruby 在安装的时候,请勾选Add Ruby executables to your PATH这个选 ...