201521123029《Java程序设计》第五周学习总结
1. 本周学习总结
1.1 尝试使用思维导图总结有关多态与接口的知识点。

1.2 可选:使用常规方法总结其他上课内容。
答:1. 课上讲了匿名内部类的使用,其中内部类就是定义在另一个类里面的类,与之相反包含内部类被称为外部类。
2. 定义接口不再使用class关键字,而是使用interface关键字。
3. 接口使用时用implement关键字。
2. 书面作业
1. 代码阅读:Child压缩包内源代码
1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。
1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。
1.3 回答:如果为了访问到protected修饰的属性或方法应该怎么办?
答:1.1 不能通过编译,问题开始出现在 System.out.println(i)上,它是直接调用父类的i,而i在Parent类中是private修饰符修饰,所以只能在本类中访问。修改后结果如图:

1.2 不能通过编译,提示错误为The type Parent is not visible,因为在Parent类定义时并没有写修饰符,所以就是默认,而默认的话,访问范围为本类和本包,而另一个包中访问,显然是不行的。
1.3 protected可以被子类访问。所以我可以通过子类来访问protected修饰的属性或方法。
2.abstract进阶:阅读GuessGame抽象类的设计与使用源代码
2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?
2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?
2.3 结合该例子,你觉得什么时候应该使用abstract?
2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明。
答:2.1 这个猜谜游戏改造前,未使用抽象类,只能控制台输出,而使用抽象类后可以在控制台,也可以使用对话框图形界面等输入,这就很方便,很有灵性。
2.2 那就在图形界面代码中调用猜谜游戏抽象类。
2.3 我觉得当许多需要编写的代码,共性多或者说是实现功能相同,那么编写出抽象类,可以很直观,方便的编写代码,去完成程序,防止出错等。
2.4 抽象类是限定规定子类必须实现某些方法,但不关注实现的细节,所以变化的是继承抽象类的子类,而抽象的是不会变化的。而子类继承抽象类后,就可以弄自己想要的变化。抽象类,相当于有多个子类,子类可以变,而父类不能变。
3.Comparable与Comparator
3.1 描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序?
3.2 有了Comparable接口为什么还需要Comparator接口呢?
3.3 可选:使用匿名内部类、Lambda表达式实现PTA编程5-2。
答:3.1 因为在Arrays有一方法 public static void sort(Object[] a),其功能是对指定对象数组按升序进行排序,数组中的所有元素都必须实现Compareble接口,所以反之实现了Compareble接口就可以进行排序。
3.2 有了comparable接口是需要掉用Arrays.sort来比较,而comparator接口在两个对象没有实现comparable接口是也可以进行比较。
4.面向接口案例分析
阅读Case-StudentDao.zip案例
4.1 画出类关系图,描述每个类与接口的作用。
4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?
答:4.1 
4.2 StudentDaoArrayImpl是使用数组实现的,StudenDaoListImpl是用ArraysList来实现的。
5.什么是面向接口编程?面向接口编程的好处是什么?
结合题目3与4中的Test.java的代码讨论分析。不要百度原封不动照搬!
答:所谓面向接口编程,就是代码与接口相关联的(比如Comparable接口),而不需要考虑具体的实现类。只要某个类(如Employee)实现了相关的接口(如Comparable),我们编写的面向接口(如Comparable)的代码就可以适用。 其中Test在我看来非常的清楚,并不会觉得混乱。会显得很有条理,有条不絮。
3. 码云上代码提交记录及PTA实验总结
题目集:jmu-Java-04-面向对象2-进阶-多态接口内部类
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
截图如下:
3.2. PTA实验
继续完成前面未完成的实验面向对象1-基础-封装继承
函数(选做:4-1)、编程(5-1, 5-2)
一定要有实验总结
答:1. 在编程时并没有搞懂Array.sort与comparable的联系,所以还需要加深知识的积累。
2.在使用抽象类时总会不自觉的写成内部类。并没有重新再包里创建一个新类来运行,这是不对的。
201521123029《Java程序设计》第五周学习总结的更多相关文章
- 201521123025<java程序设计>第五周学习总结
1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ...
- Java程序设计第五周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 **代码阅读:Child压缩包内源代码 Child.java源代 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20145237 《Java程序设计》第九周学习总结
20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...
- 20175209 《Java程序设计》第九周学习总结
20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...
- 20175313 张黎仙《Java程序设计》第九周学习总结
目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...
随机推荐
- Loadrunner结果分析中连接图没有数据的设置
场景进行中,或者之后进行结果分析中,连接图表没有数据,取消选择标记选项.
- mysqli数据库连接
/* * 连接数据库的mysqli函数库 * 使用的是过程化的风格编码 */header('content-type:text/html;charset=utf-8');// 获取数据库连接$link ...
- HBase集群安装部署
0x01 软件环境 OS: CentOS6.5 x64 java: jdk1.8.0_111 hadoop: hadoop-2.5.2 hbase: hbase-0.98.24 0x02 集群概况 I ...
- 使用 GitHub+Hexo 搭建个人博客
1.安装Git和Hexo 安装Hexo前,需要安装Node.js和Git: Node.js 下载地址 我选择的是v6.11.2 LTS Git 下载地址 我下载的是Git-2.12.2.2-64-bi ...
- Markdown转HTML/pdf格式
Markdown转HTML/pdf格式 通过_github自带_的更新博客的网页: https://github.com/YOUR_GITHUB_ACCOUNT/YOUR_GITHUB_ACCOUNT ...
- GO 语言简介(网摘)
GO 语言简介 原文出处:[陈皓 coolshell] Hello World 文件名 HELLO.GO package main //声明本文件的package名 import "fmt& ...
- java读取CSV文件添加到sqlserver数据库
在直接将CSV文件导入sqlserver数据库时出现了错误,原因还未找到,初步怀疑是数据中含有特殊字符.于是只能用代码导数据了. java读取CSV文件的代码如下: package experimen ...
- V8 内存控制
V8主要将内存分为:新生代 和 老生代. 1.新生代 新生代中的对象为存活时间短的对象. 它将堆内存一分为二,每一部分空间称为 semispace,其中一个处于使用状态(from 空间),另一个处于闲 ...
- 【Tomcat】停止冗余进程
tomcat多次连续启动,现在通过脚本,一次执行,全部停掉 [root@YFDT-DEM1701-EPMDM ~]# cat tomcat_pid.sh #!/bin/bash cat /dev/nu ...
- 2017-4-25/设计缓存(LFU)
1. 恒定缓存性能有哪些因素? 命中率.缓存更新策略.缓存最大数据量. 命中率:指请求缓存次数和缓存返回正确结果次数的比例.比例越高,缓存的使用率越高,用来衡量缓存机智的好坏和效率.如果数据频繁更新, ...