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. Eclipse的操作技巧

    网上已经有很多这类文章了,而且写的很全. 我最近刚开始使用Eclipse,写这篇文章的目的是在熟悉的过程中慢慢添加我用着顺手的一些技巧,以免因为某些原因更换开发环境后会忘记. 一.设置:窗口-首选项- ...

  2. public static void main(string[] args)解释

    这个问题困扰我好久了,今天就一查究竟,毕竟我好奇心比较重 1. why “public” 因为Java程序是通过jvm虚拟机调用的,所以main()函数要是想被调用,必须是public 2.why “ ...

  3. 2017年05月10日记一次微项目投产 | 安卓版微信内置浏览器不能解析gzip压缩过的mp4视频的问题

    前言 今天投产了一个小项目,一个很简单的H5,有播放视频功能,使用了videojs插件. 之前也做过数个视频播放,视频的转压都按照既定流程进行,文件放到FTP后,iphone和安卓机测试下来都没有问题 ...

  4. JavaScript实现浏览器本地的图像移动、大小调整和裁剪

    本文介绍如何使用和HTML5 Canvas元素来移动.调整大小和裁剪图像,这些技术适用于图片编辑器.照片分享等应用场景. 一般而言图像的剪裁会放在服务端进行,但是图片传送会消耗较多的流量.借助HTML ...

  5. S7-200PLC间的PPI通信

    一. PPI通信协议是一种主从式的通信协议,上位机即PC机为主,PLC为从.通信开始由计算机发起,PLC予以响应. 1).计算机按通信任务,用一定格式,向PLC发送通信命令. 2).PLC收到命令后, ...

  6. mysql_view

    概述: 视图即是虚拟表,也称为派生表,因为它们的内容都派生自其它表的查询结果.虽然视图看起来感觉和基本表一样,但是它们不是基本表.基本表的内容是持久的,而视图的内容是在使用过程中动态产生的.--摘自& ...

  7. 【Win10】正常上网但ping不通外网

    使用360免费wifi连接了热点后,发现无法ping外网,仅能ping网关,浏览器正常访问 后来,换了wifi共享大师,也是不行.同样ping不到外网,浏览器正常访问 但是 wifi 共享大师有个功能 ...

  8. 7.21.02 switch语句

    switch语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. 语法 switch语法格式如下: switch(expression) { case value : //语句 break ...

  9. innerHTML innerText的使用和区别

    document对象中有innerHTML.innerText这两个属性,都是获取document对象文本内容,但使用起来还是有区别的: 1) innerHTML设置或获取标签所包含的HTML+文本信 ...

  10. 关于CSS属性clip在手机浏览器端的兼容性问题

    由于自己的6坏了拿去修了所以这两天使用了同事一只山寨安卓机和自己早年的小4,在今天的页面测试中,对于img中进行clip操作在这两台机子中均不能实现,后借用同事的6发现clip能正常展现,其中安卓版本 ...