20165207 第四周学习总结

20165207 第四周学习总结

学习第五六章内容

要点

我认为第五六章内容最重要的是使用抽象类的对象来作为子类的上转型对象进行面向抽象编程,以及利用实现接口再进行接口回调等方法进行面向接口编程。还有一点更重要的是如何区分这两者并且针对具体的情况灵活使用。具体的内容都在教材上。

问题

教材和视频讲解得异常透彻,学习的时候我一共只有一处问题。
教材第152页的代码,倒数第13行的位置,bus101对象直接调用了brake方法。之前学第五章的时候,我记得第五章的例子程序一般都是用创建的上转型对象调用子类的重写的抽象方法,因此最开始我认为152页的这个程序直接用继承抽象类motorVehicles的子类Bus类所创建的bus101对象调用重写的brake方法是不可行的。但在bash里运行之后我发现这个程序完全没有问题。经过对第五章内容的回顾,我发现我忘记了子类本身就是有对于重写的abstract类调用的权限的,bus101完全可以理直气壮地调用自己重写的brake方法,这个问题太蠢了。

代码

托管

码云链接
脚本运行截图:

调试过程中的问题与解决

  1. 第五章第一个例子Example5_1编译通过但运行时只输出了部分结果然后报错:

    打开编辑器进一步查找错误,%后面少写了一个整型的d。这个问题编译能够通过,但执行时printf无法正常输出:

    重新编译运行:
  2. 教材第五章第六个例子Example5_6因为教材使用JDK版本为1.8,其中的Integer所创建的对象没有intValue方法,因此这个例子的代码在编译时会有如下问题:

    图片下面按照提示是使用参数得到的对于问题的具体描述
  3. 第五章Example5_8如果按照教材去掉super关键字,也就是说不调用父类的构造方法的结果:

    正常的结果:

    4.在第五章重写抽象方法以及第六章实现接口的过程中,会有方法名对应不上导致编译失败的问题。我遇到许多次这样的问题,这是一个例子:

    打开编辑器,方法名敲错了,这样编译器觉得我没有重写,于是才有上面的错误:

第二周课下测试错题

25题0.5在float和double范围内都能够精确表示不会因为精度的问题产生误差
27题课本23页的例子在执行nextDouble方法时发生阻塞
38题课本的例子在相邻两个变量之间进行比较然后交换位置,使用的是冒泡排序法

posted @ 2018-03-25 15:08  ltl0501  阅读(95)  评论(0编辑  收藏  举报