1. 本周学习总结

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

1.2 可选:使用常规方法总结其他上课内容。

参考资料:

百度脑图

XMind

2. 书面作业

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

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

答:不能编译通过,出错的地方在System.out.println(i);,因为父类Parent中i定义为private,所以子类Child中不能用i,只要把给予权限即可,把private改为protectedpublic就行。

结果为

1
2
2
1
1
2
1

1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。如何更改才能使之正常编译?

答:不能,提示The type Parent is not visible,因为Parent类不能在包外访问,需要在前面加上public。之后还要将Parent类里面改为public int j=2;public int geti()

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

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

答:改造后可以自定义输入,输出方法,而不局限于控制台输入。抽象类相当于给了个模板,我们可以自定义一个具体的子类,而抽象方法也是可以有我们自定义一个具体方法。

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

答:需要定义一个图形界面的类,然后在定义输入,输出的具体方法。大概。。。

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

答:就像pta上求方形,圆形的边长,面积这些例子,当操作方法为一类时(求边长,求面积),可以用abstract。abstract给我们的是一个模板,我们可以根据具体的要求来具体定义。

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

答:变化的是操作的具体方法,不变的是需要操作的这个动作(比如输入,输出),可能实现的方式不一样,但他们的目的都是输入输出,这个是不变的。

3.Comparable与Comparator

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

答:Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,则依赖compareTo方法的实现,compareTo方法也被称为自然比较方法。如果开发者add进入一个Arrays的对象想要Arrays的sort方法帮你自动进行排序的话,那么这个对象必须实现Comparable接口。compareTo方法的返回值是int,有三种情况:

  1. 比较者大于被比较者(也就是compareTo方法里面的对象),那么返回正整数
  2. 比较者等于被比较者,那么返回0
  3. 比较者小于被比较者,那么返回负整数

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

答:因为我们可能对conmparaTo方法里的比较方式不满意,所以需要用Comparator接口。Comparator接口里面有一个compare方法,方法有两个参数T o1和T o2,是泛型的表示方式,分别表示待比较的两个对象,方法返回值和Comparable接口一样是int,有三种情况:

  1. o1大于o2,返回正整数
  2. o1等于o2,返回0
  3. o1小于o2,返回负整数

3.3 可选:使用匿名内部类、Lambda表达式实现PTA编程5-2。

4.面向接口案例分析

阅读Case-StudentDao.zip案例

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



Student类:只有名字这个属性的一个类;

StudentDao接口:里面有三个方法,分别为writeStudentreadStudentdiplayAllStudent(),用来写入,读取和显示学生信息;

StudenDaoListImpl类:使用列表存放学生信息,里面定义了接口里的三个具体方法,即接口里的三个抽象方法,在这个类中被具体了;

StudentDaoArrayImpl类:使用数组来存放学生信息,里面同样定义了三个具体方法。

4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?

答:StudenDaoListImpl是用列表实现(ArrayList),而StudentDaoArrayImpl是用数组实现的。

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

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

答:说白了接口就是标准规范,就是定死了一个框架,我们根据这个框架去执行,有了标准去遵守就容易扩展,我们只需要根据标准编程,而不用针对具体的实现类。就像第4题中的StudentDao接口,我们规范了三个方法框架,所以我们只能按这个框架来具体定义,不一定都要定义的一模一样,StudentDaoArrayImpl类与StudenDaoListImpl类中各自定义的方法都不同,但是他们的方法名字和里面的参数一定都是按标准来的

   public Student readStudent(String name);
public void diplayAllStudent();```,这样的好处是更加抽象,更加面向对象,~~还能提高编程的灵活性。~~其次灵活性也提高了,比如在另一个类中想用别的输入方法,我们就可以在类中具体一个“别的”输入方法。也就是说同样叫writeStudent的方法,实际上他们的实现的方式不一样。 ###6. 结对编程:面向对象设计(大作业2-非常重要)
**内容**:使用Java代码完成上周做的面向对象设计大作业,需要有初步界面。实现的功能尽量简单,少而精,只包含必要的功能,不要追求高大全。
**写出**:类图(尽量精简,不用太多子类,两个即可)、系统常用功能描述、关键代码与界面
**形式**: 两人依托码云合作完成。请在这里贴出你们的学号、姓名与任务分工。
**注意**: 再过几次课要讲Java图形界面编程,到时候要将该系统升级为图形界面。系统的业务逻辑部分应该变化不大,变化大的是输入与输出部分。所以编码的时候,输入(Scanner)与输出(System.out)的代码,请不要将其与某个业务处理函数绑死。
选做加分: 给出两人在码云上同一项目的提交记录截图,额外加分。注:两个人在码云上新建一个项目。 ![](http://images2015.cnblogs.com/blog/1109846/201703/1109846-20170325212150877-1770125514.png) #3. 码云上代码提交记录及PTA实验总结 题目集:jmu-Java-04-面向对象2-进阶-多态接口内部类 ###3.1. 码云代码提交记录 在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
![](http://images2015.cnblogs.com/blog/1109846/201703/1109846-20170325143057518-1537266745.jpg) ###3.2. PTA实验 继续完成前面未完成的实验面向对象1-基础-封装继承
函数(选做:4-1)、编程(5-1, 5-2)
实验总结:
- 实验一,学会初步使用接口Comparable的使用方法,以及 compareTo的使用方法。在主函数里还是使用Arrays.sort来排序。(已经重写了compareTo方法,所以可以直接排序)
- 实验二,学习使用Comparator的方法,因为名字和年龄是不同的数据类型,~~~所以比较的时候使用的方法也是不一样的,年龄可以直接用大于号,小于号来比较,名字的话就用compareTo来比较。~~~所以这两类数据的比较方法是不一样的。年龄是int型,用大于号,小于号就可以比较,而名字是string型,用编写的comparaTo来比较。

201521123047 j第五周学习总结的更多相关文章

  1. 《Java程序设计》第五周学习总结

    20145224 <Java程序设计>第五周学习总结 教材学习内容总结 第八章异常处理 8.1.1使用try.catch ·教材范例用户连续输入整数,输入0结束后显示输入数的平均值(代码如 ...

  2. 201521123038 《Java程序设计》 第五周学习总结

    201521123038 <Java程序设计> 第五周学习总结 1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.ja ...

  3. 201521123061 《Java程序设计》第五周学习总结

    201521123061 <Java程序设计>第五周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 1.代 ...

  4. 201771010134杨其菊《面向对象程序设计(java)》第十五周学习

    第十五周学习总结 第一部分:理论知识 JAR文件: 应用程序首选项存储: Java Web Start JAR文件: 1.Java程序的打包:程序编译完成后,程序员将.class文件压缩打包为.jar ...

  5. LINUX内核分析第五周学习总结——扒开应用系统的三层皮(下)

    LINUX内核分析第五周学习总结——扒开应用系统的三层皮(下) 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/cou ...

  6. 20172325 2017-2018-2 《Java程序设计》第五周学习总结

    20172325 2017-2018-2 <Java程序设计>第五周学习总结 教材学习内容总结 1.布尔表达式的值只有真或假,表达式的结果决定了下一步将要执行的语句. 2.循环语句可以用在 ...

  7. 第五周学习总结&实验报告(三)

    第五周学习总结&实验报告(三) 这一周又学习了新的知识点--继承. 一.继承的基本概念是: *定义一个类,在接下来所定义的类里面如果定义的属性与第一个类里面所拥有的属性一样,那么我们在此就不需 ...

  8. 第五周学习总结&第三次实验报告(String类的应用)

    第五周学习总结 1.学习了继承的相关知识点: (1) 继承的格式为class 子类 extends 父类{} (2) 继承实际上是通过子类去扩展父类的功能 (3) 一个子类只能继承一个父类,也就是说, ...

  9. 20145213《Java程序设计》第五周学习总结补充

    20145213<Java程序设计>第五周学习总结补充 教材学习内容总结 欠的账都是要还的!第九章的内容躲过对酒当歌的夜,躲不过四下无人的街.由于第五周贪玩,疏忽冷落了Collection ...

随机推荐

  1. 疯狂的采药 洛谷p1616

    题目背景 此题为NOIP2005普及组第三题的疯狂版. 题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他 ...

  2. php中自动加载类_autoload()和spl_autoload_register()实例详解

    一._autoload 自动加载类:当我们实例化一个未定义的类时,就会触此函数.到了php7.1以后版本不支持此函数好像抛弃了 新建一个类文件名字自己随便去:news类在auto.php文件里面去实例 ...

  3. 一步一步学J2SE-HashMap的实现原理

    HashMap数据结构图 HashMap的数据结构是通过数组加链表实现的.数组是HashMap的主体,链表是为了解决Hash碰撞问题. HashMap的Get方法 1.  在get的时候首先判断key ...

  4. MAC下pyenv和pyenv-virtualenv插件初探

    为什么会使用pyenv和pyenv-virtualenv插件 一般mac自带一个python版本,称为系统版本.对于开发者而言,肯定不够用啦.所以需要在同一个mac上组建不同的开发环境并且不会冲突. ...

  5. noip普及组2007 奖学金

    奖学金 描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分相同,再按语文成绩 ...

  6. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——收流篇:(四)example代码解析

    一.example逻辑伪码 myRTSPClient附带3个example程序:simple_example.complete_example.common_example.后两个example都是从 ...

  7. Java中parseInt()和valueOf(),toString()的区别

    1.parseInt()就是把String类型转化为int类型. 如 String a= "123"; int b = Integer.parseInt(a); 这样b就等于123 ...

  8. Tuple元组 C#

    使用元组, 一些简单的结构或对象就不需要新建一个类了. https://msdn.microsoft.com/zh-cn/library/system.tuple.aspx

  9. JVM命令工具开发

    1.查看tomcat7_8080的gc状态 $ jps -v | awk '/tomcat7_8080/{print $1}' | xargs jstat -gcutil 2.查看tomcat7_80 ...

  10. css中滚动条样式的设置

    参数说明: 1.overflow-y : 设置当对象的内容超过其指定高度时如何管理内容:overflow-x : 设置当对象的内容超过其指定宽度时如何管理内容. 参数: visible:扩大面积以显示 ...