201521123065 《Java程序设计》第4周学习总结
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周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- Appium总结
运行case前,最好在case前加入等待,以免activity还未关闭,就开始定位或其他操作(如果case总报错,则考虑此问题): swipe效果: Thread.sleep(2000); ...
- IE浏览器-在Win7系统的安装和卸载
关于安装 在虚拟机(VMware Workstation)的Win7操作系统里,安装从官网下载的IE9/10/11 For Win7,始终失败.于是通过其它途径搜索到IE9/10/11 For Win ...
- Linux中mysql乱码问题
注意: 关于utf8和gbk的区别详细见:linux中文乱码问题解决办法 http://www.linuxidc.com/Linux/2010-04/25757.htm ,下面的配置中根据自己要求选择 ...
- html&css笔记(1)
本文是在阅读<head first html and css>时记下的一些需要注意的地方. 第3章 浏览器不会显示html文本中的空白符和换行. 标签的属性用来定义一个元素.p53 hre ...
- jaspersoft studio 的初级入门(一)
前言 最近的工作涉及到企业的报表生成功能,于是就想用此篇博客来记录我的学习历程.进入Jasperreport项目的官网发现有一个软件叫Jaspersoft studio的,它的版本也是6.3.1跟Ja ...
- ThinkPHP5 封装邮件发送服务(可带附件)
1.Composer 安装 phpmailer composer require phpmailer/phpmailer 2.ThinkPHP 中封装邮件服务类 我把它封装在扩展目录 extend/M ...
- 面试的妹纸问我:web缓存设置不是后台的事情吗?
背景介绍 团队最近在招前端开发,早上收到一封简历,是个妹纸,从技能点来看还算符合要求,于是约了下午3点过来面试. 整个面试过程持续了大约40分钟,问的题目也比较常规,其中一道题就是"常见的性 ...
- When Startup Disk is Full
参考自What To Do When Your Mac's Startup Disk is Almost Full Delet——Empty Trash
- JavaScript 30 - 1 学习笔记
学习JavaScirpt30的笔记! ...虽然英语不是很好,但是跟着来还是学到了一些东西. 1-------> JavaScirpt Drum Kit 功能是这样的 ,敲击键盘上面的按钮, ...
- macaca web(4)
米西米西滴,吃过中午饭来一篇,话说,上回书说道macaca 测试web(3),参数驱动来搞,那么有小伙本又来给雷子来需求, 登录模块能不能给我给重新封装一下吗, 我说干嘛封装,现在不挺好,于是乎,接着 ...