Java核心技术卷一 · 笔记(2)
目录
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)的更多相关文章
- java核心技术卷一笔记(1)
jdk是java开发工具包,里面包含了javac.jar.javadoc.java等工具,可以在bin目录中找到.有一个文件夹是jre,即jdk也包含了java运行环境.jre可单独安装,只是运行ja ...
- Java核心技术卷一 · 笔记(1)
目录 1.java的关键术语 2.==和equals 3.空串与 Null 串 4.构建字符串 5.封装 6.对象的三个主要特性 7.依赖(dependence).聚合(aggregation).继承 ...
- java 核心技术卷一笔记 6 .2.3 接口 lambda 表达式 内部类
6.2.3 对象克隆 Cloneable 接口,这个接口指示一个类提供了一个安全的clone方法.(稍作了解) 为一个对象引用的变量建立副本时,原变量和副本都是同一个对象的引用,任何一个变量改变都 ...
- java 核心技术卷一笔记 6 .2接口 lambda 表达式 内部类
6.2 接口实例 6.2.1 接口与回调 在java.swing包中有一个Timer类,可以使用它在到达给定的时间间隔时发出通告,假如程序中有一个时钟,就可以请求每秒钟获得一个通告,以便更新时钟的表盘 ...
- java 核心技术卷一笔记 6 .1接口 lambda 表达式 内部类
6.1 接口不是类,是对类的一组需求的描述,这些类需要遵守接口描述的统一格式进行定义.例如:Arrays类中sort方法(可以对对象数组进行排序)前提是对象所属的类必须实现了Comparable 接口 ...
- java核心技术卷一笔记(2)
---恢复内容开始--- 异常.断言 所有的异常都继承自Throwable类,异常包括已检查异常和未检查异常,应该抛出已检查异常,而未检查异常要么是不可控的(Error),要么是应该避免发生的(Run ...
- java 核心技术卷一笔记 6 .1.接口 lambda 表达式 内部类
6.1.2 接口不是类,不能实例化一个接口:但是可以声明接口的变量:Comparable x; 接口变量必须引用实现了接口的类对象:x = new Employee(); 检查一个对象是否属于某 ...
- 【阅读笔记】Java核心技术卷一 #0
这是一篇备忘性质的读书笔记,仅记录个人觉得有用的知识点 本文作为一个目录索引,部分章节跳过 吐槽:此书中文翻译有不少地方不太通顺,这种情况我要把英文版对应的部分也读一遍才能明白(说实话,英文里的从句表 ...
- java核心技术卷一
java核心技术卷一 java基础类型 整型 数据类型 字节数 取值范围 int 4 +_2^4*8-1 short 2 +_2^2*8-1 long 8 +_2^8*8-1 byte 1 -128- ...
随机推荐
- PHP----------linux下如何安装redis扩展。安装redis可以在我的博客redis里面寻找。
1.扩展下载地址:wget https://github.com/phpredis/phpredis/archive/develop.zip 2.下载完了以后解压压缩包 解压以后切换到 cd phpr ...
- 微信公众平台开发教程(一)_微信接入校验以及token获取
微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开发接口则是提供服务的基础. 接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 ...
- CentOS 7 配置DHCP
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP ...
- Django框架详细介绍---请求流程
Django请求流程图 1.客户端发送请求 2.wsgiref是Django封装的套接字,它将客户端发送过来的请求(请求头.请求体封装成request) 1)解析请求数据 2)封装响应数据 3.中间件 ...
- pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0
原因: 使用了多线程,多线程共享了同一个数据库连接,但每个execute前没有加上互斥锁 方法: 方法一:每个execute前加上互斥锁 lock.acquire() cursor.e ...
- Excel VBA附合导线平差自动计算表
这是6,7年前做的一个excel vba自动计算附合导线平差的表格. 对于做测绘的朋友来说,附合导线平差是最基础的技能,目前来说,能平差的软件和工具也很多,像南方的平差易,科傻平差.清华三维平差等,但 ...
- php 中 global 与 $GLOBAL 的区别
很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 根据官方的解释是$GLOBALS['var'] 是外部的全局变量$var本身. global $var 是外部$var的同 ...
- 浏览器对象模型BOM总结
BOMwindows对象document对象location对象screen对象 Windows对象 1.窗口操作 移动指定的距离:window.moveBy(10,20); //向右移动10像素,向 ...
- vue配置手机通过IP访问电脑开发环境
vue配置手机通过IP访问电脑开发环境config/index.js// Various Dev Server settings host: '0.0.0.0', // can be overwrit ...
- nginx + keepalived 主从模式
转自:https://www.cnblogs.com/kevingrace/p/6138185.html 负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可 ...