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 ...
随机推荐
- sublime text3 配置使用
前言 sublime text3 是一款优秀的代码编辑器,很多好用的功能让我成为其忠实用户. 流程 1.安装完成后首先配置package control,把下面的代码复制到sublime 的控制台: ...
- CSS属性定义 文本修饰 边框效果 背景修饰
一.CSS属性定义1.css颜色表示方法[重点]rgb(红绿蓝3个颜色通道 强度值为0-255)rgb(0,0,0)rgba(alpha a是透明度 值为0-1)rgba(123,123,123,0) ...
- ssh相关问题
问题1 一般错误信息为:ssh: connect to host localhost port 22: Connection refused 这种错误很主要的一个原因是sshd服务没有启动,先启动ss ...
- [H5]range对象的setStart/setEnd方法
1.setStart:表示某个节点的range对象的起点位置;2.setEnd:表示某个节点的range对象的结束位置; 示例如下:<body> <div id="div& ...
- 如何统计iOS产品不同渠道的下载量?
一.前言 在开发过程中,Android可能会打出来很多的包,用于标识不同的商店下载量.原来觉得苹果只有一个商店:AppStore,如何做出不同来源的统计呢?本篇文章就是告诉大家如何做不同渠道来源统计. ...
- Clang之词法分析Lex
Clang是LLVM编译器框架的前端(Frontend)编译器,可编译链接C.C++.Objective-C和Objective-C++四种语言的项目代码.Clang 的开发目标是提供一个可以替代 G ...
- Es6 类的关键 super、static、constructor、new.target
ES6引入了Class(类)这个概念,作为对象的模板,通过class关键字,可以定义类.基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对 ...
- 有了 indexOf,为什么 ECMAScript 7 还添加了 Array.prototype.include
ECMAScript 7 中新增了用于检测数组中是否包含某个元素 Array.prototype.includes() API,想到了 Array 其实有很多相关 API 可以检测到是否包含某个元素, ...
- php 微信公众号+微商城开发 基于Thinkphp3.2框架开发
说明:本教程是自己自学+自己的理解+扩展(包括学习过程中遇到的一些问题) 参考教程:麦子学院--李忠益--http://www.maiziedu.com/u/70409/ 微盟: http://www ...
- 环境配置-云服务器jdk与tomcat配置
我所实践的主机是麻花疼云的主机,第一次试用30天,装了个centos6.5,其实已经用商用专用镜像配置好环境了,包括jdk.tomcat等常用的内容,但是我实在是找不到他们安装在哪个目录下了,我就自己 ...