1. 本章学习总结

2. 书面作业

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

Q2.面向对象设计(大作业1-非常重要)

2.1 讲故事:将在网上商城购物或者在班级博客进行学习这一过程,讲述为一个故事。(不得少于50字)

网上商城购物:买家首先输入所要的商品,在Shopping类在中,找到商品这个属性中(用Commodity类定义的商品属性,包含商品的名称,价格,商品的大小及商品的所在地址),         卖家观看此商品的介绍,若为所需物品,则加入购物车,用到Shopping类中的shopcar属性(Shopcar类定义,包含所加入的商品的单价,购买的个数及存放商品的地址),在购物车中查 看订单情况,若发现不需要,可以删去订单,计算总共的话费时,在Shopping类的total方法中计算,各类商品的单价*个数总和,返回该值显示给买家看,买家付相等金额后完成购物过程

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

Q3.ManagerTest.zip代码分析:分析ManagerTest.zip中的代码,回答几个问题:

3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性

class Manager extends Employee()类,Manager继承Employee;Manager属性比Employee多了bonus,private double bonus;定义构造函数时public Manager(String n, double s, int year, int month, int day),由于Manager的全部属性除bonus以外其他都一样,故可以继承父类的构造函数来赋值,用super(),但要放在构造函数第一行才行;在调用函数时,Manager类中方法,public double getSalary(),覆盖Employee的方法getSalary(),Manager类中getSalary()中还有加入bonus

3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?

主要区别是有无bonus,有bonus则是Manager类中的方法getSalary(),无则是Employee类的方法getSalary();

3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法?

调用Employee类的getSalary方法,定义boss时,boss.setBonus(5000)已经将bonus带入getSalary()中计算,再将boss赋给staff[0],得到的奖金已是用Manager类的getSalary方法计算过的,调用时的是Employee类的getSalary方法。

3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?

可以省略与父类中相同的属性的构造函数的编写,节约成本,简洁代码;复制过去虽然直观但是会使执行时间过长,运行过慢

4.Object类

4.1 编写一个Fruit类及属性String name,如没有extends自任何类。使用System.out.println(new Fruit());是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?

System.out.println(new Fruit());语句调用了Fruit的构造函数;在未写构造函数时,系统会默认调用构造函数;输出类名加地址形式;

4.2 如果为Fruit类添加了toString()方法,那么使用System.out.println(new Fruit());调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)

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

eqauls方法是比较两个对象的内容是否相同(有分大小写),若相同,则返回true,否则返回false;
代码:
public class Main
{
public static void main(String[] args)
{
ArrayList<Fruit> fruitList=new ArrayList<Fruit>();//建立ArrayList<Fruit> fruitList
fruitList.add(new Fruit());//加入new Fruit()
Fruit a=new Fruit();
if(!fruitList.contains(a)) fruitList.add(a);//若fruitList没有a,则加入a,否则不操作
}
}

4.4 在4.3的基础上使用ArrayList fruitList存储多个fruit,要求如果fruitList中已有的fruit就不再添加,没有的就添加进去。请编写相关测试代码。并分析ArrayList的contains方法是如何实现其功能的?

ArrayList的contatins使用indexOf(),返回字符串在父串中首次出现的位置,若位置是大于等于0,返回true,否则返回false,ArrayList的contatins源代码:
public boolean contains(Objecet o){
return indexof(o)>=0;
}

5.代码阅读:PersonTest.java(abstract、多态)

5.1 画出类的继承关系

5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因

建立Person()数组person[],长度为4,peoples[0]=new Employee,peoples[1] = new Student,peoples[2] = new Programmer,peoples[3] = new Manager,接着根据年龄大小,由小到大排序输出,与运行结果比较相同

5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?

使用super方法,可以调用在子类中方法与参数相同的父类的属性和方法;不行,若是去掉,则无法继承父类中的属性或方法,用不了,导致那些继承的属性用的是默认值

5.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?

代码:
peoples[0] = new Employee("zhang", "136", "1360", "1360@mail.com", 21, "female", 1000.0);
peoples[1] = new Student("wang", "110", "15959", "15959@163.com", 18, "male", "1");
peoples[2] = new Programmer("Gates", "usa", "911", "911@com", 59, "male", 100000.0, 50000.0);
peoples[3] = new Manager("Clark", "GE", "111", "111@mail.com", 10, "mail", 90000.1, 12000.3); 创建父类的对象可以构造多个不同的对象(不同的类),节约成本(例如求圆和长方形的面积和周长的和,可以创建一个父类class Shape(){},存放形状属性,继承方法求面积 和 和 周长和,这样可以在圆和长方形中直接用super()引用这个方法,节约成本);只有子类继承父类才能在建立对象时,有多个不同的对象(多态)

201521123019 《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. U3D 控件

    1.普通控件 GUI.Label() GUI.Button()等方法添加控件 bool clicked = GUI.Button() 当按钮单击时,返回true string ss = GUI.Tex ...

  2. javascript今生前世

    事情得从一个chrome控制台中的无意打印说起. 众所周知,js共六种数据类型,string.number.undefined.boolean.object.null.当然javascript还准备了 ...

  3. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:(一)用ffmpeg解码视频

    一.概述 myRTSPClient(RTSPClient)获取音视频数据之后,接下来的工作便是将音视频数据交给解码器去解码(ffmpeg),ffmpeg解码之后于是便有了呈现在终端用户(USER)面前 ...

  4. Web 学习笔记 - 网络安全

    前言 作为 前端开发者,了解一点 Web 安全方面的基本知识是有很必要的,未必就要深入理解.本文主要介绍常见的网络攻击类型,不作深入探讨. 正文 网络攻击的形式种类繁多,从简单的网站敏感文件扫描.弱口 ...

  5. 第10天:CSS初始化操作

    在写页面过程中,每个浏览器都会有默认样式,为了避免浏览器的样式兼容问题,我们会在样式开始部分对常用标签进行重置样式.这样我们在写样式时,就不会有误差.常用的CSS标签初始化如下: @charset & ...

  6. You don't know js

    "Give me a chance to know you. " 更多内容: 移步这里 1. 作用域 1.1. 编译原理 尽管通常将 JavaScript 归类为"动态& ...

  7. 深入解析Javascript异步编程

    这里深入探讨下Javascript的异步编程技术.(P.S. 本文较长,请准备好瓜子可乐 :D) 一. Javascript异步编程简介 至少在语言级别上,Javascript是单线程的,因此异步编程 ...

  8. 【SpringMVC】XML配置说明

    springmvc流程:前端控制器(DispatcherServlet)-->映射器HandlerMapping-->适配器HandlerAdapter-->视图解析器ViewRes ...

  9. Xcode修改包名(含cocopods)

    由于需要现在要更改包名,但是在网上找了N多资料都比较老,16年的资料却是残缺不全,尤其 ios10 出了 .entitlement  的机制 ,很多琐碎的小细节 很容易忘记.所以我自己总结了一篇. 注 ...

  10. HTTP常见状态码

    1.100状态码 1xx:临时响应,表示临时相应并需要请求者继续操作的状态码 100   (继续) 请求者应当继续提出请求. 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分.   101 ...