20145325张梓靖 《Java程序设计》第4周学习总结

教材学习内容总结

  • 何谓继承

    • 继承共同行为 继承基本上就是避免多个类间重复定义共同行为;可把相同的程序代码提升为父类;用关键字 extends 来继承父类( private 成员会被继承,只不过子类无法直接存取,必须通过父类提供的方法来存取)
    • 多态与 is-a 在java中,子类只能继承一个父类;检查语法的逻辑是否正确,方式是从=号右边往左读:右边是不是一种左边呢;例:
    Role role1 = new SwordsMan();
    SwordsMan swordsMan = role1;

    对于第一行, SwordsMan是一种 Role,所以编译通过;对于第二行, Role不一定是一种 SwordsMan,因为还有可能是一种 Magician

    可使用扮演(Csat),让代码通过编译;例:

    Role role2 = new Magician();
    SwordsMan swordsMan = (SwordsMan) role2;

    代码可以编译成功,但由于实际上,role2 参考的是 Magician,而你却要让魔法师假扮为剑士,这在执行上会是个错误。

    • 重新定义行为 重新定义,即为在继承父类之后,定义与父类中完全相同的方法部署,但执行内容不同;可在重新定义方法的前面加上 “@Override” ,表示要求编译程序检查,该方法是不是真的重新定义了父类中某个方法。
    • 抽象方法、抽象类 如果某方法区块中真没有任何程序代码操作,可以使用 abstract 标示该方法为抽象方法,该方法不用撰写 {} 区块,直接 “; ”结束即可;如果某个类中,有方法定义为了 abstract 型,则必须在此类的 class 前标示 abstract
  • 继承语法细节

    • protected 被声明为 protected 的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取;Java中,有3个权限关键字,但实际上有4个权限范围,因为没有定义权限关键字,默认就是包范围。
    • 重新定义的细节 要注意,对于父类中的方法权限,只能扩大但不能缩小(即若原来成员为 public,则子类中重新定义时不可为 private 或 protected);在 Java中,如果想取得父类中的方法定义。可以在调用方法前,加上 super 关键字; static 方法属于类拥有,如果子类中定义了相同签署的 static 成员,该成员属于子类所有,而非重新定义, static 方法也没有多态。
    • 再看构造函数 在创建子类实例后,会先执行父类构造函数定义的流程,再执行子类构造函数定义的流程;如果子类构造函数中没有指定执行父类中那个构造函数,默认会调用父类中无参数构造函数;可使用 super() 来指定执行父类中的某构造函数。
    • 再看 final 关键字 class 前使用了 final ,那么久表示这个类是最后一个了,不会再有子类,也就是不能被继承;定义方法时,也可限定该方法为 final ,这表示最后一次定义方法了,也就是子类不可以重新定义 final 方法。
    • java.lang.Object 在Java 中,子类只能继承一个父类,如果定义类时没有使用 extends 指定继承任何类,那一定是继承 java.lang.Object ,任何类追溯至最上层父类,一定是 java.lang.Object ,也就是 Java 中,所有对象,一定“是一种” Object ,都可以使用 Object 声明的名称来参考;可使用 Object[] 来收集各种对象; toString() 与 equals() 都是 Object 类定义的方法。
    • 关于垃圾收集 JVM 有垃圾收集(GC)机制,执行流程(目前我们只接触过 main()程序进入点开始之后的主流程)中,无法通过变量参考的对象(就是没有牌子的对象),就是 GC 认定的垃圾对象。
  • 接口

    使用 interface 定义接口,使用 implements 操作接口。
    
    编写接口时,里面的方法都是抽象方法,必须是 `public abstract`,当然也可省略不写,编译程序会自动补充,对于接口,可以定义枚举常数(一定要用 “=” 指定值),必须是 `public static final`,当然也可以省略,编译程序也会自动补充(类中也可以定义枚举常数,不过来要写明 `public static final`)。
    
    一个类,可以操作多个接口,也可以同时继承某个类,并操作某些接口;接口可以继承另一个接口,也就是继承父类接口行为。
    
    对接口中定义的方法有2种处理方法,一是操作接口中定义的方法,二是再度将方法标示为 abstract 。
    
    以Java语意来说,继承为“是一种”关系,操作接口为“拥有行为”。
  • 多态

    如果一个类中定义了一个方法,这个方法的参量为某个接口时,只要是操作这个接口的对象,都可以使用这个方法
  • 匿名内部类

    在Java中,经常会有临时继承某个类或操作某个接口并建立实例的需求,由于这类子类或接口操作类只使用一次,不需要为这些类定义名称,这时就可以使用匿名内部类来解决这个需求。
    ```
    new 父类()|接口(){
    //类本体操作
    }
    ```
  • enum

    enum定义了特殊的类,继承自 `java.lang.Enum` ,不过这是由编译程序处理,直接撰写程序继承 Enum 类会被编译程序拒绝。
    ```
    public enum Action{
    STOP,RIGHT,LEFT,UP,DOWN
    }
    ```

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

  • 问题 匿名内部类定义的方式?
  • 解决过程

1.首先验证基本程序的正确性:

正确

        2.当匿名内部类只重新定义方法,对枚举常数没有操作时:

可以

        3.当匿名内部类重新定义方法,对枚举常数照接口写入:

可以

        4.当匿名内部类重新定义方法,并新定义了另外的枚举常数时:

不可以

        5.同理,当匿名内部类重新定义方法,并新定义了方法时:

不可以

        6.当匿名内部类重新定义方法时,没有定义完接口中的:

不可以

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

调试中,书上章节关于匿名内部类的,还存在一些疑惑,等弄明白后,会再详细叙述的。

代码托管

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3500行 28篇 300小时
第一周 150/150 1/1 20/20
第二周 100/250 1/2 22/42
第三周 150/400 2/4 21/63
第四周 1000/1400 1/5 27/90

参考资料

20145325张梓靖 《Java程序设计》第4周学习总结的更多相关文章

  1. 20155225 2016-2017-2 《Java程序设计》第九周学习总结

    20155225 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 了解JDBC架构 使用JDBC API JDBC是用于执行SQL的解决方案,开 ...

  2. ## 20145203盖泽双 《Java程序设计》第二周学习总结

    20145203盖泽双 <Java程序设计>第二周学习总结 教材学习内容总结 1.java可以分为基本类型和类类型,基本类型包括整数.字节.浮点数.字符与布尔. 整数:short(占两个字 ...

  3. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  4. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  5. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  8. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  9. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  10. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

随机推荐

  1. web基础----->模板引擎Velocity的使用(一)

    Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上.今天我们就学习一下Velocity的用法. Velocity的第一个例子 项目的主体是 ...

  2. Excel 2010 如何将筛选后的数据复制粘贴到另一个工作表筛选后的表格里

    如果你是指自动筛选后,把筛选数据复制/粘贴到另外一个工作表中,不妨试试试 第一步选中筛选后的数据区域:第二步执行菜单命令“编辑/定位/定位条件/可见单元格”,确定:第三步单击复制按钮或者Ctrl+C或 ...

  3. zabbix修改和查看登录密码

    author:hendsen chen date : 2018-08-30  16:48:18 1,登陆zabbix的服务器,查看zabbix的登陆密码: [root@jason ~]# mysql ...

  4. 【BZOJ4559】[JLoi2016]成绩比较 动态规划+容斥+组合数学

    [BZOJ4559][JLoi2016]成绩比较 Description G系共有n位同学,M门必修课.这N位同学的编号为0到N-1的整数,其中B神的编号为0号.这M门必修课编号为0到M-1的整数.一 ...

  5. {sharepoint}提升 SharePoint 代码执行权限

    提升 SharePoint 代码执行权限 关于如何提升 SharePoint 代码执行权限及相关知识介绍的文章我们园子里有很多, 这里给出其中两篇文章的链接,就不再啰嗦了. http://www.cn ...

  6. iOS - 获取状态栏和导航栏尺寸(宽度和高度)

    iPhone开发当中,有时需要获取状态栏和导航栏高度.宽度信息,方便布局其他控件.下面介绍一下如何获取这些信息: // 状态栏(statusbar) CGRect rectStatus = [[UIA ...

  7. 最舒适的路(并查集+枚举)(hdu1598)

    hdu1598 find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768 ...

  8. Guava增强for循环

    Guava的前身是Google Collections,是Google开发出的一个开源Java常用类库,包含了一些集合的便捷操作API.本文通过一些常用的例子来剖析Guava的奇妙之处. Guava是 ...

  9. pandas的drop函数

    当你要删除某一行或者某一列时,用drop函数,它不改变原有的df中的数据,而是返回另一个dataframe来存放删除后的数据. 1.命令: df.drop() 删除行:df.drop('apps') ...

  10. Python菜鸟之路:Django Admin后台管理功能使用

    前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import admin ...