20155320 2016-2017-2 《Java程序设计》第的四周学习总结

教材学习内容总结

继承与多态

  • 继承就是子承父类,避免重复定义共同行为,会使用extends关键词,表示会扩展其原来没有的行为。

    相关继承的代码

运行结果为:

  • 子类只能继承一个父类,子类与父类间会有is-a(是一种)关系。但是需注意程序编译时是从右往左读的。所以一下这种情况无法通过编译。
Role role1=new SwordsMan();
SwordsMan swordsMan=role1;//Role不一定是SwordsMan类

需要将代码改为如下以通过编译,但这在执行时期可能会出错,需仔细考虑:

Role role1=new SwordsMan();
SwordsMan swordsMan=(SwordsMan)role1;

-多态即指使用单一接口操作多种类型的对象,多态具有更高的可维护性

多态程序showblood

运行结果为:

  • 重新定义即为在继承父类后,在子类中定义与父类中相同的方法部署,但执行内容不同。

    重新定义的应用程序

运行结果为:

  • 类中若有方法没有操作,就需标示为abstract,且在class前也一定要标abstract,表示这个类定义不完整
  • 子类继承标示有abstract的类1.继续标示该方法为abstract,则class前也一定要标2.操作抽象方法
  • 声明为protect的成员,相同包中的类可以直接存取,不同包中的类可以在继承后直接存取。
  • 如果子类想获取父类中的方法定义,可以在调用方法前,加上super,这种方法不能被定义为private,重新定义方法,对于父类中的方法权限,只能扩大不能缩小。

    相关范例程序

运行结果为:

  • 重新定义方法时可将方法类型定义为父类中的子类。
  • 在创建子类实例后会先执行父类定义的初始流程,再执行子类定义的初始流程,若干子类构造函数中没有指定执行父类的哪个构造函数则会默认调用父类中无参数构造函数。
  • 若干想执行父类中的构造函数,可使用super()指定。
  • class前加上final关键字,那么表示这是最后一个类了,不会再有子类;方法若被定义为final,则子类不能重新定义方法。
  • java.lang.object是所有类的顶层父类,object上定义的方法,所有对象都继承下来,只要不是被定义为final的方法,均可重新定义。

    object的运用
  • instanceof运算符可以用来判断对象是否由某个类创建,左操作为对象右操作是类

接口与多态

  • 定义行为在可以使用interface关键字。
  • 类要操作接口,必须使用implements关键字;操作接口时对接口中定义的方法有两种处理方式1.操作接口中定义的方法2.在读将该方法表示为abstract。

    关于游泳乐园的代码

运行结果为:

  • 操作接口表示拥有行为,但不会有是一种关系。
  • 有弹性、可维护性的程序就是增加新的需求,原有的程序无须修改,只需针对新需求撰写程序。
  • 类可以操作两种以上的类,即具有两种以上的行为。

    操作两种以上类的程序oceanworld

运行结果为:

  • Java中,接口可以继承自另一个接口,即继承父接口行为,且在子接口中额外定义行为。

    接口继承范例Ship

运行结果为:

  • 接口中的方法没有操作时,一定得是公开且抽象,但是可以省略public abstract,其默认定义即为这样。
  • 在interface中,只能定义public static final的枚举常数,若省略,则会默认补充,且必须使用=指定值,否则会编译错误。
  • 接口可以继承别的接口,也可以同时继承两个以上的接口,同时会继承父接口的操作。
  • 匿名内部类的语法为:
new 父类()|接口(){
//类本体操作
}
  • JDK8以前,如果要在匿名内部类中存取局部变量,则该局部变量必须是final。
  • 可以使用enum语法来定义枚举常数,public enum Action定义的Action实际上是个类,而enum中列举的常数实际上为Action实例,由于构造函数为private,只有Action类中才可以实例化,因此可以传入的只有在Acion类中定义的实例。

    enum枚举实例Game

运行结果为:

教材学习中的问题和解决过程

  • 在学习第六章时,我发现了教材程序的错误,我按教材范例来练习程序Guest,我发现按教材上的程序来,得到的结果如下,与所需结果不符:

    教材程序Guest

  • 后我通过单步调试发现原因出在如下循环的位置:

  • names.add()的执行应该在循环内,这样每次录入的名字才能加入数组,而不是只有最后一个quit,将循环处的程序改为如下,即可得到所需输出:

    正确修改后的程序GuestJDB

代码调试中的问题和解决过程

  • 在编写与接口有关的代码oceanword时,我由于想偷懒,在继承后的子类中少写了执行父类构造函数的这部分代码:
public  Flyingfish(String name){
super(name);
}

结果出现了如下错误提示:

  • 这是因为若子类构造函数中没有指定执行父类父类中的哪个构造函数,则会默认执行父类中的无参数构造函数,但是父类中没有无参数构造函数,则必须指定执行哪个构造函数,否则就是调用不存在的构造函数了。补充上以上代码后,则运行结果正确了。

代码托管

  • 代码提交过程截图:

  • 代码量截图:

上周考试错题总结

  • 题1,Linux Bash中,(grep)命令可以进行全文搜索
  • 题5,System.out.println(52+25+””);的结果是(77);java中可以通过‘+’来连接字符串,但是+要在字符串前,才表示连接的是字符串。
  • 题18, p109 Average.java,求1,2,3,4,5的平均值的命令是(java cc.openhome.Average 1 2 3 4 5);这是因为在启动JVM并指定执行类时,可以一并指定命令行自变量
  • 题25,判断:public void someMethod(int i)和public int someMethod()是方法重载。(OK);返回值类型不可作为方法重载依据,所以public void someMethod()和public int someMethod会被视为同一个定义,方法重载可根据传递自变量类型不同和参数列个数不同来设计方法重载。

其他(感悟、思考等,可选)

本周主要学习了继承、接口和多态的问题,感觉上和c语言的函数还是差别很明显的,语法比较繁杂,但是通过本周和上周的学习,已经能能够自己独立的编写一些程序了,尤其本周书本上的代码大都不能直接用,通过这两周的学习,衔接改写代码已经基本没有太大问题了,但是在一些复制程序的理解和编写上还需继续努力。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 1/4 20/20 安装了JDK及IDEA
第二周 144/164 1/5 18/38 学习了java语言的基本语法
第三周 447/567 1/6 20/ 58 掌握了一些有关对象和封装的内容
第四周 875/ 1442 1/7 23/81 学习了解了继承、接口和多态的相关问题

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

20155320 2016-2017-2 《Java程序设计》第的四周学习总结的更多相关文章

  1. 20165318 2017-2018-2 《Java程序设计》第四周学习总结

    20165318 2017-2018-2 <Java程序设计>第四周学习总结 IDEA安装 按照娄老师Intellj IDEA 简易教程,我下载了IDEA但是由于没有注册学校邮箱,我没办法 ...

  2. 20145213《Java程序设计》第四周学习总结

    20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...

  3. 20145330《Java程序设计》第四周学习总结

    20145330<Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复习前面的,如此巩固也让我对 ...

  4. 20145337《Java程序设计》第四周学习总结

    20145337<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承,避免多个类间重复定义共同行为 符合DRY(Don't Repeat Yourself)原则,多 ...

  5. 20145218 《Java程序设计》第四周学习总结

    20145218 <Java程序设计>第四周学习总结 教材学习内容总结 继承 继承共同行为 继承基本上就是避免多个类间重复定义共同行为. 继承的三个好处:减少代码冗余:维护变得简单:扩展变 ...

  6. 《Java程序设计》第四周学习总结

    20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...

  7. 20155304 2016-2017-2 《Java程序设计》第四周学习总结

    20155304 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序 ...

  8. 201521123038 《Java程序设计》 第四周学习总结

    201521123038 <Java程序设计> 第四周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.通过 ins ...

  9. 201521123061 《Java程序设计》第四周学习总结

    201521123061 <Java程序设计>第四周学习总结 1. 本章学习总结 (1)思维导图: --- (2)上课内容总结: 第四周学习了Java中的继承与多态,思维导图中已经给出了本 ...

  10. 20175209 《Java程序设计》第四周学习总结

    20175209 2018-2019-2 <Java程序设计>第四周学习总结 教材知识点总结 1.子类和父类: 子类的继承性:子类与父类在同一包中——子类继承父类中不是private的变量 ...

随机推荐

  1. [19/05/01-星期三] GOF23_行为型模式(策略模式、模板方法模式)

    一.策略模式(strategy) [策略接口] /*** * "策略"接口 */ package cn.sxt.strategy; public interface Strateg ...

  2. 26、springboot与消息

    概述: 1.大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力消息服务中两个重要概念:           2.消息代理(message broker)和目的地(destination) ...

  3. 在Ubuntu 18.04中安装Oracle Java JDK 8

    Webupd8 Team维护一个PPA存储库,其中包含适用于所有当前Ubuntu版本的Oracle Java 8安装程序脚本. 1.打开终端并运行命令添加PPA: sudo add-apt-repos ...

  4. Android——sqlite3 基本命令操作

    平时用到database的地方不多,这里记录一下shell终端下直接对db的基本操作! 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details ...

  5. SimpleDateFormat 的 format 方法使用具体解释

    Java中怎么才干把日期转换成想要的格式呢.或把字符串转换成一定格式的日期,如把数据库中的日期或时间转换成自己想要的格式,JAVA中提供了SimpleDateFormat类能够实现,下面是Simple ...

  6. linux内核追踪(trace)(QEMU+gdb)

    1.引言 Linux内核是一个很大的模块,如果只是看源码有时会难以理解Linux内核的一些代码设计情况,如果可以结合Linux内核运行同时阅读源码再好不过,本文大致介绍Linux内核追踪方式,采用工具 ...

  7. Linux下gdb调试(tui)

    1 处于TUI模式的GDB 为了以TUI模式运行GDB,可以在调用GDB时在命令行上指定-tui选项,或者处于非TUI模式时在GDB中使用Ctrl+X+A组合键.如果当前处于TUI模式,后一种命令方式 ...

  8. linux crontab 计划任务设置 (简结)

    命令: crontab  -l  查看当前运行的计划任务 crontab  -e  编辑当前运行计划任务 修改或添加 VIM编辑器用法:按 i 键进入编辑文本状态, esc 结束编辑状态 , :wq ...

  9. DBCP数据库连接池的简单使用

    0.DBCP简介      DBCP(DataBase connection pool)数据库连接池是 apache 上的一个Java连接池项目.DBCP通过连接池预先同数据库建立一些连接放在内存中( ...

  10. iOS 使约束带动画效果(Animate NSLayoutconstraints)

    http://stackoverflow.com/questions/12926566/are-nslayoutconstraints-animatable http://stackoverflow. ...