201521123051 《Java程序设计》第4周学习总结
1. 本周学习总结
1.1 尝试使用思维导图总结有关继承的知识点。
使用工具:百度脑图
1.2 使用常规方法总结其他上课内容。(多态)
多态的定义:父类的引用指向子类的对象。
父类的引用:一是指父类变量指向的那个内存空间
二也是指父类自由的类型信息表,这个表示任何对象都具备的,和继承多态无关。
子类的对象:
一是指子类的那个堆内存空间。
二也是指子类的那个类型信息表。
2. 书面作业
1.注释的应用
使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)
类注释
方法注释
1、单行注释:“//……”(快捷键 ctrl + shift + c)
2、块注释:“/*……*/”(快捷键trl + shfit + /)
3、文档注释:“/**……*/”(不清楚快捷键,,希望赐教)
4、 注释标签语法
@author 对类的说明 标明开发该类模块的作者
@version 对类的说明 标明该类模块的版本
@see 对类、属性、方法的说明 参考转向,也就是相关主题
@param 对方法的说明 对方法中某参数的说明
@return 对方法的说明 对方法返回值的说明
@exception 对方法的说明 对方法可能抛出的异常进行说明
2.面向对象设计(大作业1,非常重要)
2.1 将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字,参考QQ群中PPT的范例)
①进入淘宝网站,账号密码登录
②找宝贝、确定宝贝
1、搜索自己想要买的东西。点击自己选中的商品,这时可以询问卖家一些问题,比如价格呀,运费呀,质量呀,售后呀等等问题。
2、点击“加入购物车”,选择颜色,尺寸,数量等商品属性
3、点击“确定”。
③付款
1、进入“我的购物车”,选中商品。
2、点击“结算”,选择“支付宝帐户余额支付”,若支付宝没余额,就选择“网银支付”。 支付宝的付款方式很多的,比如合作网点、邮政、网银、信用卡等等,很方便的。
3、再输入支付密码,点“确定”就ok了!
2.2 通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。
系统中包含的类:①User类(属性,Username & Password) ②CommodityLibrary类(Commodity) ③search类(Commodity) ④ShoppingCart类(Commodity&Number等等) ⑤payment类(Paymentmethod & Paymentpassword) ⑥Commodity(Size &Color& Number等等)
2.3 尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)
3。ManagerTest.zip代码分析
分析ManagerTest.zip中的代码,回答几个问题:
3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。
**3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?
Employee类中的getSalary()方法自然是父类的(也许父类可以调用子类方法,但应该有关键字之类的)。Manager类中的getSalary()方法自然是子类的,super.getSalary()【关键字super】自然表示调用父类的getSalary()方法。
3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。
是调用Manager类的getSalary方法
3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?
好处就是代码行数变少了
把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来更直观,但是代码变得冗长,不如用super调用父类方法。
4.Object类
4.1 编写一个Fruit类及属性String name,如没有extends自任何类。使用System.out.println(new Fruit());是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?
class Fruit {
private String name;
}
public class Main {
public static void main(String[] args) {
System.out.println(new Fruit());
}
}
将输入的Object类的对象的值转换成了字符串,输出。
4.2 如果为Fruit类添加了toString()方法,那么使用System.out.println(new Fruit());调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)
父类中的toString方法并不会消失,为Fruit类添加了toString()方法,系统会优先调用其方法。
class Fruit {
private String name;
public String toString() {
return super.toString();
}
}
public class Main {
public static void main(String[] args) {
System.out.println(new Fruit());
}
}
使用super关键字即可复用其父类的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 画出类的继承关系
5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因
运行结果
5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?
使用super关键字调用父类。
不能将子类中的super构造函数去掉
5.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?
多态的体现
多态的好处
可以增强程序的可扩展性及可维护性,使代码更加简洁。
不但能减少编码的工作量,也能大大提高程序的可维护性及可扩展性。
多态与继承关系
多态是:一个对象可以被多个其他对象动态调用
继承是:一个子类可以继承父类的属性,和方法
没有封装就谈不上继承,而没有继承,就不可能有所谓的多态。
而理解封装、继承和多态(特别是多态)是理解设计模式的基础。
3. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
4. PTA实验
实验总结
通过这次编程和上机实验学到了挺多内容的,对于继承和多态的体会更加深刻了。原来都只是理论上的学习,操作的时候还真无从下手。实验做完,还是有很多不懂得地方,希望能够尽快把问题解决好。\
掌握了方法的覆盖、重载,掌握抽象类和接口的使用。对于Java语言有了更深一层的认识,多态与继承、方法重写密切相关,我们在方法中接收父类类型作为参数,在方法实现中调用父类类型的各种方法。当把子类作为参数传递给这个方法时,java虚拟机会根据实际创建的对象类型,调用子类中相应的方法。
201521123051 《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 ...
随机推荐
- 【NO.1】Jmeter-安装JDK- 配置Jmeter运行的环境 - 是使用Jmeter的前提
本篇文档是描述:当我们遇到没有安装JDK的Windows系统的电脑.Linux系统的电脑的时候,该怎么来安装JDK. 如果你不安装JDK,那么就没办法开始使用Jmeter. JDK下载地址 http: ...
- Lenovo T440p 外放没有声音
背景:Lenovo T440p,今天突然想听会歌 外放竟然没声音,fuck!!! 任务栏声音图标也没有静音标志. 驱动出问题了?检查下驱动,正常. 找了耳机试下,正常,看来驱动真的没问题. 喇叭坏了? ...
- c++中类对象的内存对齐
很多C++书籍中都介绍过,一个Class对象需要占用多大的内存空间.最权威的结论是: *非静态成员变量总合.(not static) *加上编译器为了CPU计算,作出的数据对齐处理.(c语言中面试中经 ...
- Orleans的集群构建
Orleans的集群构建 这是Orleans系列文章中的一篇.首篇文章在此 听闻一周前,微软公布了.net core2.0,以及各种各样的其他core2.0.大家都很兴奋.微妈的诚意真是满满的.这次开 ...
- jenkins 从git拉取代码
步骤 jenkins已集成git插件(如无,请自行下载) 1. 去到源码管理栏,选中Git: 使用http协议去获取代码 Repository URL填写http的git地址,此时未选择相应的Cred ...
- postman也可以使用F12功能
背景: 做过接口测试的话,大多数都知道或使用过postman工具,使用postman的时候,有时候希望也可以像chrome一样使用F12功能,这样方便观察一些数据,尤其是当你使用了postman的变量 ...
- 【Weblogic】在linux创建domain过慢的解决方法
修改Linux上Weblogic使用的jdk $JAVA_HOME/jre/lib/security/java.security 文件 将 securerandom.source=file:/dev/ ...
- find the Nth highest salary(寻找第N高薪水)
Suppose that you are given the following simple database table called Employee that has 2 columns na ...
- latex 生成pdf
我个人还是比较推崇传统的方法:先生成dvi,在生成pdf. 直接在winEdt中点击最下方的Windows Command Prompt, 否则从cmd进入命令行的话,还要进入tex文件夹,好麻烦. ...
- Spring Boot之Hello World
Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...