1. 本章学习总结
1.1 尝试使用思维导图总结有关多态与接口的知识点。
1.2 可选:使用常规方法总结其他上课内容。
接口是一种特殊的抽象类,是对行为的抽象,它不能使用new进行实例化,接口中可以包含常量,一个类能实现多个接口。
2. 书面作业
1.代码阅读:Child压缩包内源代码
1.1com.parent
包中Child.java
文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。
不能通过编译,在System.out.println(i);上会显示错误The file parent.i is not visible,因为i是用private定义的,在该程序中不能被调用,可以把private int i=1;改成protected int i=1。
1.2 另外一个包中的OutOfParentPackage.java
,能否编译通过?提示什么错误?分析原因。如何更改才能使之正常编译?
不能通过编译,在 static void showParentj(Parent p)上会显示错误Parent cannot be resolved to a type ,但是改成public static void showParentj(Parent p)又会出现两个错误,最后把protected int j=2改成public int j=2;把protected int geti()改成pubic int geti()。
2.abstract
进阶:阅读GuessGame
抽象类的设计与使用源代码
2.1 Guess
改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?
改造前未使用抽象类,只能在控制台输出,改造后使用了抽象类,可以在控制台输出,也可以使用对话框图形界面等输入。
2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?
2.3 结合该例子,你觉得什么时候应该使用abstract
?
当你的class里面有不是abstract的方法或者成员变量的时候,就应该要用abstract
2.4重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract
、继承等概念进行说明。
在这个例子中,变化的是我们输入的数字,不变的是随机值还有输出结果。
3.Comparable与Comparator
3.1 描述Comparable
接口的用途。为什么某个类实现了Comparable
接口就可以直接使用Arrays.sort
对其进行排序?
Comparable接口是对对象进行比较排序的前提。数组中的所有元素实现了Comparable接口后,Arrays.sort有一方法能对指定对象数组按升序进行排序。
3.2 有了Comparable
接口为什么还需要Comparator
接口呢?
有了Comparator,即使两个对象没有实现Comparable接口,也可以比较。
3.3 可选:使用匿名内部类、Lambda
表达式实现PTA编程5-2。
4.面向接口案例分析
阅读Case-StudentDao.zip
案例
4.1 画出类关系图,描述每个类与接口的作用。
4.2StudenDaoListImpl
与StudentDaoArrayImpl
有何区别?
二者都是通过StudentDao接口实现的,但是前者是通过列表实现,后者是通过数组实现。
5.什么是面向接口编程?面向接口编程的好处是什么?
结合题目3与4中的Test.java
的代码讨论分析。
面向接口编程就是代码与接口相关联的,而不需要考虑具体的实现类,例如Arrays.sort面向Comparable接口进行编程,就是面向接口编程。面向接口编程的好处是,能使程序结构清晰使用方便,提高工作效率,而且允许多重实现,弥补了继承的缺陷。
题目集:jmu-Java-04-面向对象2-进阶-多态接口内部类
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
3.2. PTA实验
继续完成前面未完成的实验面向对象1-基础-封装继承
函数(选做:4-1)、编程(5-1, 5-2)
一定要有实验总结
实验总结:经过这么多次实验,也找到比较适合自己的学习方法,感觉还是要多看例题代码,再把别人的东西转化为自己的,这样遇到相似的题目自己也就知道怎么做了。
所有评论(0)