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 ...
 
随机推荐
- shell运算符之 关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符
			
shell运算符有很多,关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符 1,算术运算符 原声bash 不支持简单的算术运算,可以使用expr 工具 两点注意: 表达式和运算符之间要有 ...
 - C++数组和指针加减法和sizeof问题
			
关于指针和加减法: 指针的加减法:指针的加减法,加多少或者减多少,主要是看所指对象的sizeof值. 例子: double m = 3.0; ; double *p=&m; int* p1=& ...
 - 导入import com.sun.image.codec.jpeg.JPEGCodec出错
			
在Eclipse中处理图片时,需要引入两个包:import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPE ...
 - shell的编程结构体
			
本文目录: 1.1 shell函数 1.2 条件结构:if 1.3 条件结构:case 1.4 条件结构:select 1.5 循环结构:for 1.6 循环结构:while 1.7 循环结构:unt ...
 - JFreeChart的使用(转)
			
前提:导入需要的2个jar文件,jcommon-版本号.jar,jfreechart-版本号.jar.可以去官网下载:http://sourceforge.net/projects/jfreechar ...
 - selenium元素定位大全
			
要做自动化,首先要了解页面结构,要了解页面结构,就要了解页面元素的定位方法 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合B ...
 - Google研究人员宣布完成全球首例SHA-1哈希碰撞!
			
2004年的国际密码讨论年会(CRYPTO)尾声,我国密码学家王小云及其研究同事展示了MD5.SHA-0及其他相关杂凑函数的杂凑碰撞并给出了实例.时隔13年之后,来自Google的研究人员宣布完成第一 ...
 - Vue-上拉加载与下拉刷新(mint-ui:loadmore)一个页面使用多个上拉加载后冲突问题
			
所遇问题: 该页面为双选项卡联动,四个部分都需要上拉加载和下拉刷新功能,使用的mint-ui的loadmore插件,分别加上上拉加载后,只有最后一个的this.$refs.loadmore.onTop ...
 - TensorFlow框架(5)之机器学习实践
			
1. Iris data set Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理.Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集.数据集包含150个数据集,分为3类, ...
 - Servlet知识点
			
如果请求采用Get方式,则重写doGet()方法,如果请求采用Post方式,则重写doPost()方法. 下面是重写doGet()方法的servlet例子. servlet继承如下类: 整体结构: 在 ...