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. mysql 安装流程 兼容8.0.0以上版本 解决修改密码规则问题

    背景介绍: 第一次安装mysql服务端,版本8.0.6 遇到了问题:1:不知道流程:2:8.0以上版本密码加密规则修改的解决方案:   1:下载mysql 服务端 https://dev.mysql. ...

  2. 什么是真正的APM?

    近年来APM行业被越来越多的企业所关注,尤其是在2014年末,NewRelic的成功上市,更加激发了人们对这个行业前景的无限遐想.那么究竟什么是APM?APM的目的是什么?要求我们做什么?有不少企业对 ...

  3. 在CentOS中使用 yum 安装MongoDB及服务器端配置

    转自 http://blog.csdn.net/zhangfeng19880710/article/details/20166853 一.准备工作: 运行yum命令查看MongoDB的包信息 [roo ...

  4. Thinkphp --- 路由定义

    thinkPHP的路由: thinkphp下的 conf 下可以进行配置:(154行) /* 系统变量名称设置 */ 'VAR_MODULE' => 'm', // 默认模块获取变量 'VAR_ ...

  5. ssh-keygen 不是内部或外部命令解决办法!

    在使用 git 的远程仓库的时候,生成秘钥的使用,会遇到ssh-keygen不是内部命令也不是外部命令的问题: 具体解决: 第一步:找到:Git/usr/bin目录下的ssh-keygen.exe(一 ...

  6. tensorflow和python操作中的笔记

    前一段时间做了一些项目,把一些笔记放在了txt中,现分享出来,自己也能够时长预习. 1) 读取文件时,将固定的文件地址,采用数组或者字符串的形式,提前表示出来,后期使用时候采用拼接操作 2) # 得到 ...

  7. linux加载硬盘过程

    查看系统可用磁盘大小: [root@i-mbyar7df ~]# df -h Filesystem      Size  Used Avail Use% Mounted on /dev/sda1    ...

  8. js 中 0 和 null 、"" Boolean 值关系

    在做字符串非空判断时,无意发现一个问题,记录下以便以后回顾. 问题描述:非空判断,只是校验传值的内容是否为"".null .undefined.当变量 赋值的字符串内容为 0,此时 ...

  9. Spring 依赖注入 基于构造函数、设值函数、内部Beans、集合注入

    Spring 基于构造函数的依赖注入_w3cschool https://www.w3cschool.cn/wkspring/t7n41mm7.html Spring 基于构造函数的依赖注入 当容器调 ...

  10. SDL结合QWidget的简单使用说明

    SDL(Simple DirectMeida Layer)是一个简单的封装媒体库,功能主要涉及了相关于OpenGL或者DirectX的显卡硬件功能和一些鼠标,键盘等外设访问.这里主要只说明一下它的渲染 ...