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. Jquery ztree树插件

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. mysql shutdown and kill

    --mysqladmin shutdown If you execute mysqladmin shutdown when connecting to a local server using a U ...

  3. ECC椭圆曲线详解(有具体实例)

    前言 ECC英文全称"Ellipse Curve Cryptography" 与传统的基于大质数因子分解困难性的加密方法不同,ECC通过椭圆曲线方程式的性质产生密钥 ECC164位 ...

  4. 网易校招C++研发工程师笔试题

    选择题: mysql主从复制,server_id问题 mysql key_len 找以.conf为结尾的文件 问答题: 实现一个超大整数的类 并实现加减法功能 用string实现大数加减法(博客里以前 ...

  5. 【leetcode】92. Reverse Linked List II

    Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1-> ...

  6. Go语言循环判断的使用~

    Go 语言条件语句 条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 下图展示了程序语言中条件语句的结 ...

  7. C#高级编程:泛型优点和特性

    泛型是CLR 2.0的一个新特性,在CLR 1.0中,要创建一个灵活的类或方法,但该类或方法在编译期间不知道使用什么类,就得以Object类为基础.而Object在编译期间没有类型安全性,因此必须进行 ...

  8. WPF控制动画开始、停止、暂停和恢复

    1.闲言 好久也没更新一博客了,自己有点发懒,同时确实这几个月来也有点忙.风机监测软件,项目中,有这样一个小需求:正常风机在旋转的时候,上位机软要做一个风机的图片,让它不停地旋转,一但检测到下面风机停 ...

  9. SQL实现 模糊查询(转)

    在进行数据库查询时,有完整查询和模糊查询之分. 一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,% :表示任 ...

  10. js history对象 手机物理返回键

    有兴趣的可以了解下history对象,不感兴趣也可以直接跳到手机物理返回键监听部分 使用场景: 场景1:项目中一个表单页面,需得填写验证码,填写验证码后提交,由于使用的form直接提交,没有使用AJA ...