教材学习内容总结

6.1 何谓继承

  • 何谓继承 面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承,滥用继承而导致程序维护上的问题时有所闻。如何正确判断使用继承的时机,以及继承之后如何活用多态,是学习继承时的重点。:

  • 通过extends继承的父类可以是不加abstract关键字的普通类,也可以是加了abstract关键字的抽象类。继承普通类时可以覆写父类的方法,或者创建自己独有的方法,或者这两者都不使用。继承抽象类时,必须覆写抽象类中的全部抽象方法

6.2

  • protected 被声明为 protected 的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取;Java中,有3个权限关键字,但实际上有4个权限范围,因为没有定义权限关键字,默认就是包范围。

  • 重新定义的细节 要注意,对于父类中的方法权限,只能扩大但不能缩小(即若原来成员为 public,则子类中重新定义时不可为 private 或 protected);在 Java中,如果想取得父类中的方法定义。可以在调用方法前,加上 super 关键字; static 方法属于类拥有,如果子类中定义了相同签署的 static 成员,该成员属于子类所有,而非重新定义, static 方法也没有多态。

  • 关键词final
  • final可以用于修饰变量、方法和类,表示被修饰的东西只能做一次初始化,之后不能发生改变

  • 当final修饰方法参变量时,表示方法中不会对参变量的值做修改
  • final修饰的静态成员变量必须在声明时或在静态初始化块中初始化
  • final修饰的方法在继承过程中不能被覆写
  • final修饰的类不能被其他类继承

  • final类没有子类,final类的成员方法不会被覆写,final类的成员变量却不一定是常变量象。

7.1 何谓接口

  • 定义形式:interface interfaceName {…}
    ,成员方法默认为抽象的、公有的,成员属性默认为静态的、final修饰的,接口只是提供一种形式,具体的实现细节交由它的类完.由于接口不涉及具体的实现,因此在接口中的成员变量是静态常变量,默认为static和final修饰,类实现一个接口:class MyClass implements A, B, C {…}

  • 一个类可以实现多各个接口
    注意:虽然在接口中没有显式声明方法是公有的,但接口中默认的访问控制是公有的,而类中默认的访问控制是包内友好,所以必须在类中将这个方法用public修饰

  • 接口和抽象类的选择:
  1. Java中类之间不支持多继承,但类可以实现多个接口

  2. 若类需要包含一些方法的实现,必须实现为抽象类,其他情况两者皆可,优先选择使用接口,使程序更加易于扩展

7.2 接口语法细节

  • 使用interface来定义抽象的行为外观,方法要声明为public abstract,无须且不能有操作。为了方便,也可以省略public abstract,编译程序会协助补齐。可以使用接口枚举常数,只能定义为public static final。为了方便,也可以省略public static final。
  • 接口可以继承别的接口,也可以同时继承两个以上的接口,也是使用extends关键字。
    enum语法可用于定义枚举常数,enum实际上定义了类,而enum中列举的常数实际上是public static final,无法撰写程序直接实例化枚举类型,因为构造函数权限设定为private,只有类中才可以实例化。

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

  • 不了解重载和覆盖的区别
  • 在百度和多方询问之后才得知:

    1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));
    2、不能通过访问权限、返回类型、抛出的异常进行重载;
    3、方法的异常类型和数目不会对重载造成影响;

代码托管http://git.oschina.net/bestiisjava2017/gaoziyun20155311/tree/master/javadashabi/out/production/javadashabi?dir=1&filepath=javadashabi%2Fout%2Fproduction%2Fjavadashabi&oid=0e3cc2618a97058f2a9b77cd7d275b4923f03992&sha=a23d4f1061b5595c0ce40ecd7ce57e544962482c

  • 代码提交过程截图:

    • 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图

上周考试错题总结

1.“30”转化为byte类型的30的语句是(Byte.parseByte(“30”);)。

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

  这周感觉学习比较吃力,抽象的东西越来越多,理解上难度也逐渐增加。如:对象、封装等概念,即使读了,也不能完全理解。也不能再吃C语言的老本,需要我投入更多的时间和精力,我需要更多的去展开去学习,不能仅仅局限在看书,码代码上,不懂的地方,我会先码着码,好先留存着问题,去与同学进行交流。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20 hello java
第二周 300/500 2/4 18/38 流程控制
第三周 500/1000 3/7 22/60 类与对象、封装
第四周 300/1300 2/9 30/90 继承、接口

最新文章

  1. php关于ob_start('ob_gzhandler')启用GZIP压缩的bug
  2. Codeigniter 3.0 相关文档 part two
  3. IOS 通用颜色快速生成代码
  4. 烂泥:KVM与kickstart集成
  5. Chrome浏览器插件
  6. LintCode "k Sum" !!
  7. JAVA中的常见面试题1
  8. IE7下position:relative的问题
  9. 基于BaseHTTPServer的简单存储服务器
  10. javaScript & jquery完美判断图片是否加载完毕
  11. 【iOS】iOS它Container View获得ViewController
  12. php 验证身份证号
  13. 自学Aruba之添加黑名单Blacklists方法
  14. 将一个C++的AES加密算法(有向量的)翻译成C#
  15. J - Long Long Message (最长公共子串)
  16. linux command>file 2>&1 & 命令详解
  17. 深入浅出OAuth2.0授权
  18. String和StringBuffer和StringBuilder
  19. POJ 1034 The dog task(二分图匹配)
  20. 2018.11.28 RF基础1

热门文章

  1. es6面试题--Promise相关
  2. MySQL查询时强制区分大写和小写
  3. Kali-linux控制Meterpreter
  4. wepy build 错误 [Error] 未发现相关 less 编译器配置,请检查wepy.config.js文件。
  5. Jenkins+Ant+Jmeter接口自动化集成测试实例
  6. lwip BUG ,导致 系统 死机
  7. CentOS6安装各种大数据软件 第十章:Spark集群安装和部署
  8. bat脚本实现复制特定后缀文件到其他目录
  9. [Linux]使用宝塔面板做负载均衡时遇到的问题和解决办法
  10. 解决placeholder对ie9及以下的不兼容