1. 本周学习总结

1.1 尝试使用思维导图总结有关继承的知识点。

1.2 使用常规方法总结其他上课内容。

在本周的学习中,我知道了在类的定义里,还学习到了抽象类以及抽象方法的使用格式。

2. 书面作业

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

面向对象设计

2.1 将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。

先打开类似淘宝的网上商城,登入账号,在搜索栏中输入要购买的东西的关键字,查看与其相关的商品,决定好要买的东西加入购物车,最后进入购物车进行结算,在结算界面里点击付款,完成此次购物。

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

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

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

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

    class Manager extends Employee
{
/**
* @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)
{
super(n, s, year, month, day);
bonus = 0;
} public double getSalary()
{
double baseSalary = super.getSalary();
return baseSalary + bonus;
} public void setBonus(double b)
{
bonus = b;
} private double bonus;
} Employee为父类,Manager为子类。Manager继承了Employee类的getSlaray()方法,name、salary、hireDay等属性。 3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢? 可以用super来调用父类。 3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。 调用的是Employee类的getSalary方法。 3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗? 不需要再写相同的代码,简化了代码。

4.Object类

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

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

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

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

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

5.1 画出类的继承关系

![](http://images2015.cnblogs.com/blog/1109907/201703/1109907-20170318175321620-659103209.png)

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

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]]]

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

作用:减少代码量,用现有的。
如果将子类中的super构造函数去掉,会报错,一般会调用父类无参的构造函数,但这时候并没有这个函数会提醒要显式调用另一个。

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

好处:运行时能够自动地选择调用哪个方法。
多态与继承:继承是多态的基础。

6. 码云代码提交记录

7. PTA实验

(1)对toString()方法了解更加深刻。
(2)掌握了子类与父类概念。

最新文章

  1. ArcGIS中的VBA修复
  2. LeetCode 笔记系列 17 Largest Rectangle in Histogram
  3. [译] jQuery 3 有哪些新东西
  4. AX 2012 中代码控制用户可查询哪些公司的数据
  5. WebApi 服务监控
  6. python中的 @ 修饰符
  7. 两年的坚持,最后还是决定将ISoft开源
  8. adb找不到设备
  9. JUnit扩展:引入新注解Annotation
  10. emmet插件的导入与实用
  11. JVM远程调试功能
  12. THUWC2018游记
  13. mongoDB与mongoose
  14. Java虚拟机(二):Java GC算法 垃圾收集器
  15. Cannot run Eclipse; JVM terminated. Exit code=13
  16. python算法之冒泡排序
  17. form表单上传图片问题:线下可以而线上不可以
  18. NPOI工具类
  19. 洛谷P1393 动态逆序对(CDQ分治)
  20. Windows下使用Python的Curses库时 No module named _curses问题

热门文章

  1. getNextElement( )函数——获取下一个特定的元素节点
  2. 寻人启事(O(∩_∩)O哈哈~)
  3. “最美天气”版本II
  4. 正则表达式-linux基础
  5. 关于Eclipse启动报错,jvm版本不匹配的问题
  6. python条件判断与循环
  7. ASP.NET Core 运行原理解剖[4]:进入HttpContext的世界
  8. 常用bash命令
  9. java程序启动参数-D含义详解
  10. 闭锁——CountDownLatch