1.多态、动态绑定

一个对象变量(例如, 变量 e) 可以指示多种实际类型的现象被称为多态(polymorphism)。 在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding)

2.覆盖

如果在子类中定义了一个与超类签名相同的方 法, 那么子类中的这个方法就覆盖了超类中的这个相同签名的方法。

在覆盖一个方法的时候,子类方法不能低于超类方法的可见性。特别是, 如果超类 方法是 public, 子类方法一定要声明为 public。

3.阻止继承:final 类和方法

有时候,可能希望阻止人们利用某个类定义子类。不允许扩展的类被称为 final 类。

4.抽象类(abstract修饰)

  • 抽象方法充当着占位的角色, 它们的具体实现在子类中。扩展抽象类可以有两种选择。 一种是在抽象类中定义部分抽象类方法或不定义抽象类方法,这样就必须将子类也标记为抽 象类;另一种是定义全部的抽象方法,这样一来,子类就不是抽象的了。
  • 类即使不含抽象方法,也可以将类声明为抽象类。
  • 抽象类不能被实例化。也就是说,如果将一个类声明为 abstract, 就不能创建这个类的对 象。

5. 4 个访问修饰符:

1 ) 仅对本类可见 private。

2 ) 对所有类可见 public.

3 ) 对本包和所有子类可见 protected。

4 ) 对本包可见— —默认(很遗憾), 不需要修饰符。

6.toString()

强烈建议为自定义的每一个类增加 toString 方法。这样做不仅自己受益, 而且所 有使用这个类的程序员也会从这个日志记录支持中受益匪浅。

7.对设计继承关系很有帮助的建议

  • 将公共操作和域放在超类
  • 不要使用受保护的域
  • 使用继承实现“ is-a” 关系
  • 除非所有继承的方法都有意义, 否则不要使用继承
  • 在覆盖方法时, 不要改变预期的行为
  • 使用多态, 而非类型信息:使用多态方法或接口编写的代码比使用对多种类型进行检测的代码更加易于维护和扩展。
  • 不要过多地使用反射

8.接口

接口(interface) 技术,这种技术主要用来描述类具有什么功能,而并不 给出每个功能的具体实现。一个类可以实现(implement)—个或多个接口,并在需要接口的 地方,随时使用实现了相应接口的对象。 接口不是类,而是对类的一组需求描述,这些类要遵从接口描 述的统一格式进行定义。

  • 接口绝不能含 有实例域。
  • 提供实例域和方法实现的任务应该由实现接口的那个类来完成。因此, 可以将接口看成 是没有实例域的抽象类,但是这两个概念还是有一定区别的。

9.默认方法

可以为接口方法提供一个默认实现。必须用 default 修饰符标记这样一个方法。

  • 默认方法的一个重要用法是 “ ‘ 接口演化” (interface evolution)。(为接口增加方法可以保证“ 二进制兼容”)。
  • 解决默认方法冲突

    Java 的相应规则要简单得多。规则如下:

    1 ) 超类优先。如果超类提供了一个具体方法,同名而且有相同参数类型的默认方法会 被忽略。

    2 ) 接口冲突。 如果一个超接口提供了一个默认方法,另一个接口提供了一个同名而且 参数类型(不论是否是默认参数)相同的方法, 必须覆盖这个方法来解决冲突。

......后续更新lambda表达式......

Java核心技术卷一 · 笔记(2)的更多相关文章

  1. java核心技术卷一笔记(1)

    jdk是java开发工具包,里面包含了javac.jar.javadoc.java等工具,可以在bin目录中找到.有一个文件夹是jre,即jdk也包含了java运行环境.jre可单独安装,只是运行ja ...

  2. Java核心技术卷一 · 笔记(1)

    目录 1.java的关键术语 2.==和equals 3.空串与 Null 串 4.构建字符串 5.封装 6.对象的三个主要特性 7.依赖(dependence).聚合(aggregation).继承 ...

  3. java 核心技术卷一笔记 6 .2.3 接口 lambda 表达式 内部类

    6.2.3   对象克隆 Cloneable 接口,这个接口指示一个类提供了一个安全的clone方法.(稍作了解) 为一个对象引用的变量建立副本时,原变量和副本都是同一个对象的引用,任何一个变量改变都 ...

  4. java 核心技术卷一笔记 6 .2接口 lambda 表达式 内部类

    6.2 接口实例 6.2.1 接口与回调 在java.swing包中有一个Timer类,可以使用它在到达给定的时间间隔时发出通告,假如程序中有一个时钟,就可以请求每秒钟获得一个通告,以便更新时钟的表盘 ...

  5. java 核心技术卷一笔记 6 .1接口 lambda 表达式 内部类

    6.1 接口不是类,是对类的一组需求的描述,这些类需要遵守接口描述的统一格式进行定义.例如:Arrays类中sort方法(可以对对象数组进行排序)前提是对象所属的类必须实现了Comparable 接口 ...

  6. java核心技术卷一笔记(2)

    ---恢复内容开始--- 异常.断言 所有的异常都继承自Throwable类,异常包括已检查异常和未检查异常,应该抛出已检查异常,而未检查异常要么是不可控的(Error),要么是应该避免发生的(Run ...

  7. java 核心技术卷一笔记 6 .1.接口 lambda 表达式 内部类

    6.1.2 接口不是类,不能实例化一个接口:但是可以声明接口的变量:Comparable x;    接口变量必须引用实现了接口的类对象:x = new Employee(); 检查一个对象是否属于某 ...

  8. 【阅读笔记】Java核心技术卷一 #0

    这是一篇备忘性质的读书笔记,仅记录个人觉得有用的知识点 本文作为一个目录索引,部分章节跳过 吐槽:此书中文翻译有不少地方不太通顺,这种情况我要把英文版对应的部分也读一遍才能明白(说实话,英文里的从句表 ...

  9. java核心技术卷一

    java核心技术卷一 java基础类型 整型 数据类型 字节数 取值范围 int 4 +_2^4*8-1 short 2 +_2^2*8-1 long 8 +_2^8*8-1 byte 1 -128- ...

随机推荐

  1. #WEB安全基础 : HTTP协议 | 0x16 HTTPS:加密的秘密

    公开秘钥加密&&共享秘钥加密 这两个冗长的短语,让我拿什么理解? 我们知道HTTPS有加密功能,以上的两个短语很常用.先摆在这,接下来开始尝试理解它们. 共享秘钥加密(对称秘钥加密): ...

  2. ArrayList 和 LinkList 的区别

    ArrayList 的相关知识 public class ArrayList<E> extends AbstractList<E>implements List<E> ...

  3. 用Volume在主机和Docker容器文件传输

    1.使用Volume在主机和容器之间传输文件. 在官方文档中可以看到使用如下命令即可创建一个volume: Create a volume: $ docker volume create my-vol ...

  4. visualization of filters keras 基于Keras的卷积神经网络(CNN)可视化

    https://adeshpande3.github.io/adeshpande3.github.io/ https://blog.csdn.net/weiwei9363/article/detail ...

  5. Python伊始——From Boring to Amazing

    先来谈一下关于Python编程语言的浅薄认知,“一门编程课,仅此而已”这是我几个月前对这门应用技术的认识. 如今看来,却不只是“仅此而已”,作为今年年初被加入计算机二级考试科目的这门技术,或许并不是它 ...

  6. Angular.js指令

    ng-style   <input type="button" value="set color" ng-click="myStyle={col ...

  7. Java-关于Thread

    1)进程是受操作系统管理的基本运行单元,线程是进程中独立运行的子任务 2)Thread.start()方法通知线程规划器,告知其该线程已经准备完成,可以调用其run方法,这时就是异步的方法:如果直接调 ...

  8. mysql 事物没提交导致事物一直运行解决方案

    1.设置 innodb_kill_idle_transaction 参数, 可以永久避免 https://dbaplus.cn/news-11-974-1.html

  9. springmvc 配置之 mvc:default-servlet-handler

    配置dispatchServlet的方法一般是: <servlet> <servlet-name>mvc-servlet</servlet-name> <se ...

  10. 对比剖析Swarm Kubernetes Marathon编排引擎

    Docker Native Orchestration 基本结构 Docker Engine 1.12 集成了原生的编排引擎,用以替换了之前独立的Docker Swarm项目.Docker原生集群(S ...