1. 本周学习总结
2. 书面作业
作业参考文件下载
Q1:代码阅读:Child压缩包内源代码
1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。
//Parent.javapackage com.parent;class Parent{ private int i=1; protected int j=2; protected int geti(){ return i; } public void getj(){ System.out.println(j); }}//Other.javapackage com.parent;class Other{ public static void showParentj(Parent p){ System.out.println(p.j); System.out.println(p.geti()); } }//Child.javapackage com.parent;public class Child extends Parent{ public static void main(String[] args){ Parent p = new Parent(); Child c = new Child(); c.getParenti(); c.getParentj(); Other.showParentj(p); } public void getParenti(){ System.out.println(i); } public void getParentj(){ System.out.println(super.j); System.out.println(j); System.out.println(geti()); System.out.println(super.geti()); }}
com.parent包
中Child.java文件
不能通过编译。System.out.println(i);
这句出现错误。
class Parent{ private int i=1;//父类private改为protected protected int j=2; protected int geti(){ return i; } public void getj(){ System.out.println(j); }}
在Eclipse试运行,如图
1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。如何更改才能使之正常编译? 不能通过编译,提示错误The type Parent is not visible.
,将parent类
改为public类
即可正常编译。 Q2:abstract进阶:阅读GuessGame抽象类的设计与使用源代码
2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?
Guess改造前,未使用抽象类,只能控制台输出;改造后,使用抽象类,可以在控制台,也可以使用对话框图形界面等输入。2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作? 写一个图形界面的类去继承Guess中的抽象类,然后重写抽象类中的代码。2.3 结合该例子,你觉得什么时候应该使用abstract? 在类中的方法没有实现时,使用abstract
2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明. 由例子可以看出,输出输入方法变了,环境变了;而不变的是这个抽象类。 Q3:Comparable与Comparator
3.1 描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序?
Comparable接口
强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过Arrays.sort
进行自动排序;Arrays.sort
面向Comparable接口
进行编程,所以以可以直接使用3.2 有了Comparable接口为什么还需要Comparator接口呢? 如果实现类没有实现Comparable接口
,又想对两个类进行比较(或者实现类实现了Comparable接口
,但是对compareTo方法
内的比较算法不满意),那么可以实现Comparator接口
,自定义一个比较器,写比较算法。 Q4:面向接口案例分析
阅读Case-StudentDao.zip案例
4.1 画出类关系图,描述每个类与接口的作用。4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?
StudenDaoListImpl
与StudentDaoArrayImpl
学生信息存储的形式不同。StudenDaoListImpl
是用列表实现存储学生信息,支持存取不定长度的对象数组;StudentDaoArrayImpl
是用数组存储学生信息,需要已知数组的大小。 Q5:什么是面向接口编程?面向接口编程的好处是什么?
所谓面向接口编程,就是代码是与接口相关联的(比如Comparable接口
),而不需要考虑具体的实现类。
Employee
)实现了相关的接口(如Comparable
),我们编写的面向接口(如Comparable
)的代码就可以适用。 Q6:结对编程:面向对象设计(大作业2-非常重要)(未完成)
6.1
6.2 常用功能描述框架图6.3 关键代码6.4 运行界面3. 码云上代码提交记录及PTA实验总结
题目集:jmu-Java-04-面向对象2-进阶-多态接口内部类
3.1. 码云代码提交记录3.2. PTA实验
-运用Comparable接口进行排序:使用compareTo的方法,Comparable接口强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表可以通过Arrays.sort 进行自动排序。