201521123121 《Java程序设计》第5周学习总结

1. 本周学习总结

1.1 尝试使用思维导图总结有关多态与接口的知识点。

2. 书面作业

代码阅读:Child压缩包内源代码

1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。

不能通过

parent类中i是private型,可将访问权限修饰词改为public.protected或者留空
子类继承了父类的i=1,j=2,是否有super并无影响。

1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。

The type Parent is not visible,提示parent不可见,在类名前面加上指定词public,第一句中j访问词应该改成public或者直接defult,将指定词改为public

1.3 回答:如果为了访问到protected修饰的属性或方法应该怎么办?

同一个包中,子类可访问,不在同一个包中,只能通过子类的引用

abstract进阶:阅读GuessGame抽象类的设计与使用源代码

2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?

抽象类和抽象方法起到一个模版的作用,规定了方法,却可以不限制实现方式

2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?

使用之前规定好的抽象类,设计图形界面并进行继承,将抽象方法进行重写

2.3 结合该例子,你觉得什么时候应该使用abstract?

当子类需要继承使用某抽象类的时候,来将没有具体定义的抽象方法进行实现

2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明。

变化的输入、界面等。抽象类不变,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。
abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明而没有实现,需要子类继承实现

Comparable与Comparator

3.1 描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序?

实现它的每个类的对象进行整体排序,比较此对象与指定对象的顺序
通过Comparable接口,就可以来告诉计算机排序规则后使用Arrays.sort进行排序了。

3.2 有了Comparable接口为什么还需要Comparator接口呢?

Comparable接口是一个对象本身已经支持自比较所需要实现的接口,
而Comparator是一个另写一个外部类来实现的比较的接口

面向接口案例分析

阅读Case-StudentDao.zip案例

4.1 画出类关系图,描述每个类与接口的作用

StudentDao接口:用于写入、读取学生信息
StudentDaoArrayImpl类:用数组来存放学生信息
StudenDaoListImpl类:用列表来存放学生信息

4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?

StudenDaoListImpl使用了ArrayList,而StudentDaoArrayImpl使用的是数组

5.什么是面向接口编程?面向接口编程的好处是什么?

结合题目3与4中的Test.java的代码讨论分析。不要百度原封不动照搬!

类似于制定了一个框架和目标,只有实现者和调用者都遵循“面向接口编程”这个准则,完成框架任务,而不用管具体如何实现,提高协作效率和扩宽协作方式,制定者的协调目的才能达到

3. 码云上代码提交记录及PTA实验总结

题目集:jmu-Java-04-面向对象2-进阶-多态接口内部类

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

3.2. PTA实验

两道题目对Comparable与Comparator的理解做出了要求,从根本写法上来看,其实两道题并没有本质上的区别,实现Comparable,重写compareTo()方法
Comparable 是一个对象本身就已经支持自比较所需要实现的接口
而 Comparator 是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。

posted @ 2017-03-25 01:41  闷声发大财!吼啊  阅读(245)  评论(0编辑  收藏  举报