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.在使用抽象类时总会不自觉的写成内部类。并没有重新再包里创建一个新类来运行,这是不对的。

posted on 2017-03-25 18:52  茗想  阅读(199)  评论(0编辑  收藏  举报