1. 本周学习总结

2. 书面作业

  1. 注释的应用
    使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)                                                                                                                                                                                                                      

  2. 面向对象设计(大作业1-非常重要)
    2.1 讲故事:将在网上商城购物或者在班级博客进行学习这一过程,讲述为一个故事。(不得少于50字)                                                                                                                                                                                                 小白登录淘宝,想买一本Java书,在搜索栏中输入了“Java”之后,再点击搜索,跳出了一个新的页面框,在各种各样的Java书中选择了一本看的最顺眼的,点击该商品进入后宝贝详情界面后,然后加入购物车,接着进入购物车结算,在结算界面,系统自动跳出这本Java书的价格以及可以使用的优惠,点击了付款,选择付款方式后输入密码,并完成了此次购物。

    2. 通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。                                                                                          

    2.3 尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)

ManagerTest.zip代码分析
分析ManagerTest.zip中的代码,回答几个问题:
3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。                                                                                                                                                                                                                      

这里的n,s,year,month,day都复用了Employee的已定义的内容。这里用到了super()经过查询super有3种用法
第一种:
super.xxx;(xxx为变量名或对象名)
这种方法意义为,获取父类中的名字为xxx的变量或方法引用。
使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作
第二种:
super.xxx();(xxx为方法名)
这种方法意义为,直接访问并调用父类中的方法。
第三种:
super();
这种方法意义为,调用父类的初始化方法,其实就是调用父类中的public xxx()方法

3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?                                                                                                                                                                                                                                         当子类和父类都有相同的字段,父类的a属性会隐藏起来。通过super调用。
3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。                                                                                                                                                                                                     调用的是Employee类的getSalary方法
3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?                                                                              若直接复制粘贴虽然看起来直观,但会显得代码过于冗长,不能一目了然。

  1. Object类
    4.1 编写一个Fruit类及属性String name,如没有extends自任何类。使用System.out.println(new Fruit());是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?                                                                           因为输出一个对象,实则输出toString方法,所以提中是调用Fruit类的toString方法。
    4.2 如果为Fruit类添加了toString()方法,那么使用System.out.println(new Fruit());调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)                      public String toString()
    {                                                                                                                                                                                                                                                                                                                                        return super.toString();                                                                                                                                                                                                                                                                                       
    4.3 Fruit类还继承了Object类的equals方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true。(使用代码证明你自己覆盖的equals方法是正确的)                                 public boolean equals(Fruit x,Fruit y) {                                                                                                                                                                                                                                                                                  if(x==y)return true;                                                                                                                                                                                                                                                                                                      else return false;                                                                                                                                                                                                                                                                                                            }                            
    4.4 在4.3的基础上使用ArrayList<Fruit> fruitList存储多个fruit,要求如果fruitList中已有的fruit就不再添加,没有的就添加进去。请编写相关测试代码。并分析ArrayList的contains方法是如何实现其功能的?

  2. 代码阅读:EqualsTest.java(equals与hashCode)
    5.1 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因                                                                                                                                                                                                                     

    5.2 为Employee类的equals函数的每一行加中文注释。                                                                                                                                                                                                                                                                        

    首先,Person类是一个抽象类,无法实例化对象,因此只需分析Student类,Employee类,Manager类和Programmer类的toString()方法,可以发现其实也就是按部就班的输出成员变量,然后再利用super关键字调用父类Person类的toString()方法,得出运行结果,而Manager类和Programmer类继承Employee类,Employee类继承Person类,因此有两层toString()输出。

    5.3 为Manager类的equals函数的每一行加中文注释。并回答,编写子类的equals函数需要注意什么?                                                                                                                                                                                                          1)作用:调用父类的构造器; (2)不行,去掉后编译器会调用父类无参构造器,而PersonTest.java中没有无参构造器,会出现编译出错的情况。       
    5.4 对EmployeehashCode源代码,加中文注释。并结合数据结构中的知识,你觉得每个类中都有的hashCode方法有什么用?                                                                                                                                                                              首先,我们来看看ppt上对多态的定义

    而在PersonTest.java中,出现了以上两点情况,最明显的就是toString()方法,每个类的toString()方法都有不同的实现(如5.2代码运行结果所示),并且父类类型变量都可引用子类对象。

  3. 代码阅读:PersonTest.java(abstract、多态)
    6.1 画出类的继承关系
    6.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因
    6.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?
    6.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?

参考链接:PersonTest.java

3. 码云代码提交记录

4. PTA实验

    • 在做实验时应当多参考一下老师发的文档。
      学会使用super调用父类方法
      多试试以多态的方式来写代码

201521123087 《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. Hadoop集群时间同步

    0x01 ntp安装 检查时间服务器是否安装 # rpm -q ntp ntp-4.2.4p8-2.el6.x86_64 // 这表示已安装了,如果没有安装,这是空白. //如果没有安装,我们按照下 ...

  2. 神器Vim之命令介绍

    前天晚上看casa直播项目的组件化,不仅了解了如何快速对现有项目进行组件化,以及进一步不断迭代,实现完全组件化的过程:同时,也被casa的vim技能的熟练程度所震撼.早就听说,vim是unix系统上文 ...

  3. 2017多校第9场 HDU 6170 Two strings DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6170 题意:给了2个字符串,其中第2个字符串包含.和*两种特别字符,问第二个字符串能否和第一个匹配. ...

  4. cvpr2017:RSVP

    1.简单介绍 这个框架主要应用场景是更智能的视频监控.主要贡献是利用long term和short term的时序信息来预测当前帧.框架分割的主要对象是人,将图像中的人物分割成头发.脸.大衣.裤子.包 ...

  5. RTMP协议中文翻译(首发)

    翻译:阿宝 更新:2016-09-11 来源:彩色世界(https://blog.hz601.org/2016/07/03/real-time-messaging-protocol/index.htm ...

  6. ios逆向过程中lldb调试技巧-po篇

    假如你准备在模拟器里面运行这个,你可以在"(lldb)"提示的后面输入下面的: (lldb) po $eax LLDB在xcode4.3或者之后的版本里面是默认的调试器.假如你正在 ...

  7. STL简单的介绍

    我们要知道C++的含义:C语言 + 类 + 模板  (STL就是典型的代表) STL是Standard Template Library的简称,中文名是标准模库.从根本上说,STL是一些“容器”的集合 ...

  8. IP地址冲突

    IP地址冲突问题.. IP地址冲突多数是由于同一局域网内,有2台或者多台电脑设置了同一个本地IP地址,导致局域网内部IP冲突导致,,建议尽量将本地IP地址设置为自动获取--然后查看自动获取的IP地址是 ...

  9. BotVS开发基础—Python API

    代码 import json def main(): # python API列表 https://www.botvs.com/bbs-topic/443 #状态信息 LogStatus(" ...

  10. 区别jquery对象和dom对象及转换方法

    一.jquery对象 由$() 获取,例如 var div = $("#id"); 这个div是jquery对象,它里面没有dom对象自带的方法.常见的dom对象自带的方法, 例如 ...