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. 开源的PaaS方案:在OpenStack上部署CloudFoundry (三)部署BOSH

    BOSH是CloudFoundry提供的用来安装部署和升级CloudFoundry的自动化工具,可是说是CloudFoundry的一部分.总体来说,BOSH是Client/Server结构, BOSH ...

  2. MyBatis——Mapper XML 文件

    Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会 ...

  3. ubuntu 关闭显示器的命令

    sleep 2s ; gnome-screensaver-command -a或sleep 2s ; xset dpms force off2秒后关闭显示器

  4. 【Android】Android 发送短信和打电话的方法

    发送短信的方法 有两种方法可以实现发送短信,其一是使用intent-startActivity,URI数据格式为"smsto:num",调用的action为Intent.ACTIO ...

  5. shell脚本抓取网页信息

    利用shell脚本分析网站数据 # define url time=$(date +%F) mtime=$(date +%T) file=/abc/shell/abc/abc_$time.log ht ...

  6. Comparable 与 Comparator的区别

    Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序 ...

  7. 170721、springboot编程之注解(annotation)列表

    (1)@SpringBootApplication 申明让spring boot自动给程序进行必要的配置,这个配置等同于: @Configuration ,@EnableAutoConfigurati ...

  8. 170607、SQL Select语句完整的执行顺序

    SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...

  9. tomcat的配置和优化

    tomcat的内存使用配置,最大连接数配置. 如何修改配置呢,在/tomcat的/bin/下面有个脚本文件catailna.sh. 如果 windows 是bat设置tomcat的使用内存,其实就是设 ...

  10. 转载 io多路复用

    作者:ZingpLiu 出处:http://www.cnblogs.com/zingp/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 回到 ...