1. 本周学习总结

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

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

类设计:属性设计类型为priate并初始化。
文档注释:以/*开始,以*/结束。
继承:存在的本身是为了减少重复代码以免冗长增加不便;
单继承性,并继承所有成员;
出现覆盖时用supper调用父类,会根据对象的类型来选择进行父类或子类的函数;
创建子类时父类构造函数自动调用;
覆盖与重载的区别:覆盖是子类重新定义父类已存在的函数或进行更改,重载是同一个类中一样的函数名不一样的名称。
final与abstract:final不能被继承,final修饰的类没有子类,因此不能引用此类的对象;
abstract必须被继承,与final相反,不能new创建实例。
抽象方法:抽象方法的类一定是抽象类,抽象类的方法不一定都是抽象方法。
object:toString-默认调用,一般自定义覆盖;
equal-判断对象是否有相同引用;
hashCode-将对象插入散列表,equal方法改变也须改变哈希方法。

2. 书面作业

1、注释的应用

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

类的注释:

方法的注释:

2、面向对象设计

2.1 将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字,参考QQ群中PPT的范例)

a、月末了打开手机淘宝屯粮;
b、点开天猫超市,选择食品饮料的饼干糕点;
c、将中意的商品全部加入购物车;
d、打开购物车发现满88包邮,返回购物界面继续添加商品;
e、结账时又发现购物券满150-20,继续挑选;
f、根据总计金额增删商品使最接近150;
g、确认收货人信息及收货地址,付款成功。

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

2.2 我发现年轻人及中年人在用这个系统,系统中包含淘宝(父类),其子类有天猫,口碑外卖等。父类的属性有产品,购物车,订单,收货信息等。

类与属性的思维导图:

3、ManagerTest.zip代码分析

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

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

方法的复用:super(n, s, year, month, day)复用了父类的有参构造函数public Employee(String n, double s, int year, int month, int day);
double baseSalary = super.getSalary()复用了父类的public double getSalary();
属性的复用:class Manager extends Employee复用了父类的private String name; double salary; Date hireDay;

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

Manager-getSalary()
{
double baseSalary = super.getSalary();
return baseSalary + bonus;
}
Employee-getSalary()
{
return salary;
}
Employee类setSalary其实是Manager的baseSalary,Manager的salary还包括Bonus;
在调用setSalary函数时,系统会根据该方法的实际对象类型进行调用。

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





运行结果如上:
通过工资的输出可以得知当执行到staff[0]时,e.getSalary是调用的Manager类的getSalary方法(其方法中还调用了Employee类的getSalary方法)因为初始化是这样的Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15);staff[0] = boss;
当执行到staff[1],staff[2]时是调用的Employee类的getSalary方法。

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

从直观上讲,用一句super(n, s, year, month, day);代替了private String name;private double salary;private Date hireDay;三句,减少了代码的冗长繁琐,并且可以直观的看出Manager和Employee之间的继承关系。
直接将代码复制到Manager构造函数中,对setSalary函数需要重新书写浪费代码的空间。

4、Object类

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

运行结果如上,调用了Object的toString类,因为所有的类都是默认继承自Object类,toString实现了该对象的字符串,equal比较对象是否是相同的引用,clone实现复制该对象。

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

这是添加了toString()方法,父类的toString方法还在,只是被覆盖了,创建该对象时调用的是对象里的toString().

这是复用父类的toString(),只需要用到super关键字就可以:

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

Object-eqauls:用于比较两个对象的地址值是否相同,值相等或所属一个对象返回true,另一个对象就返回false.

覆盖的equal方法及运行结果如下:

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

测试代码如下:

public boolean contains(Object o) {
return indexOf(o) >= 0;
}
由上源代码可看出contains的实现是调用了indexOf这个函数,通过查找是否含有该元素返回true or false.

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

5.1 画出类的继承关系

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

运行结果如下:



原因分析:
推测运行结果应该是按年龄排序输出,原因是四个成员对象都继承了person这个抽象类,有其共同的属性和方法,新建指向对象时自动调用了person类的构造函数并打印。

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

作用是调用子类所继承的父类的函数,不行,去掉了会出现编译错误,因为子类中没有编写构造函数,去掉之后缺乏完整性。

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

1、子类的构造函数中用super调用父类的构造函数;
2、多态可以防止出现多次重复的代码,如果没有多态性,若继承父类的子类有多个,则每个子类都要编写重复的代码,这样就显得冗余;
3、有关系,没有继承就没有多态,子类要先继承于父类才能调用父类的属性及方法。

3. 码云代码提交记录

4. PTA实验总结

1、使用继承需要些extends,不能写在同一个类里面就默认是继承了;

2、如何创建一个数组可以存放不同类型的对象可以用object型,因为所有类都默认继承于object。object真强大。

3、码云最近总是提交不上去,只能手动上传文件。

4、函数第二题



一定根据题目粘贴代码

5、不能用new创建抽象派的实例。

201521123065 《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. MySQL多字节字符集造成主从数据不一致问题

    MySQL多字节字符集造成主从数据不一致问题 来自江羽   2013-04-27 16:03:56|  分类: 默认分类|举报|字号 订阅 转载: http://backend.blog.163.co ...

  2. 用netstat查看网络状态详解

    --用netstat查看网络状态详解 -----------------------------2014/06/11 一.Linux服务器上11种网络连接状态:                     ...

  3. vue中将汉字按照首字母排序,也适用于其他地方,但不适用多音字

    1,.定义数组,可以是从后台传回的数据,也可以是自己写的数据(要json格式) 2.定义一个计算属性,用于将汉字排序(多音字的排序不推荐用这个) 3.在页面渲染

  4. tomcat运行时JVM参数调整

    进入tomcat/bin目录 catalina.bat 中加入set JAVA_OPTS=-Xms210m -Xmx256m -Xmn70m -XX:PermSize=150m -XX:MaxPerm ...

  5. 【Tomcat】Invalid character found in the request target

    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC ...

  6. c语言 进程控制---创建进程 vfork()函数

    #include "stdio.h" #include "unistd.h" #include "sys/types.h" int gvar ...

  7. 不安装vc2015 Redistributable解决api-ms-win-crt-runtime-l1-1-0.dll丢失错误

    一.背景 最近用到python下的cx_Oracle模块,开发环境中测试正常,用cx_freeze打包后,到用户机器上一部署,各种奇奇怪怪的问题频出,运行环境如下: a.开发环境:64位win10操作 ...

  8. Servlet---基础、转发重定向、编码问题解析

    servlet   是运行在服务器端的三大web组件之一 [web三大组件:Servlet  Filter   Listener]      是处理客户端请求的 还有表单提交的请求         接 ...

  9. React渲染问题研究以及Immutable的应用

    写在前面 这里主要介绍自己在React开发中的一些总结,关于react的渲染问题的一点研究. 另外本人一直希望在React项目中尝试使用,因此在之前已经介绍过immutable的API,可以参看这里I ...

  10. Flask01 初识flask、flask配置

    1 什么是flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 百度百科:点击前往 中文文档: ...