初读"Thinking in Java"读书笔记之第九章 --- 接口
- 抽象类和抽象方法
abstract void f();抽象方法是仅有声明而没有方法体的方法。- 包含抽象方法的类叫做抽象类,如果一个类包含了一个抽象方法,则该类必须限定为抽象类。
- 抽象类和抽象方法可以使类的抽象性更加明确。
- 继承抽象类的类,在运行时不需要 向下转型。
- 接口
- interface关键字用于产生一个完全抽象的类。其中不存在任何提供具体实现的方法。
- 可以在interface前面添加public,但这仅当接口名与文件名相同时才可以。
- 接口可以包含域,但他们是隐式定义为static和final的。
- 通过implements可以用来实现接口,和类的继承类似。
- 接口中被定义的方法必须都是public的,而且默认都是public的。
- 完全解耦
- 接口可以实现代码的解耦,使得代码复用更加容易进行。
- 适配器设计模式可以接受接口所拥有的接口,并产生所需要的接口。
- 采用类的继承有时还是会导致代码耦合度过高,此时可以考虑采用接口。一个接口可以供多个不相关的类进行使用,从而降低了耦合度。
- Java中的多重继承
- Java可以继承任意多个接口,并可以向上转型为每个接口。
- 如果知道某事物应该称为一个基类,那么第一选择应该是使它称为一个接口。
- 通过继承来扩展接口
- 通过继承可以在接口中添加新的方法声明。
- 通过继承可以在新接口中组合数个接口。
- extend只能用于继承一个类,但可以继承多个接口。
- 尽量避免在打算组合的不同接口中使用相同的方法名,这会造成可读性的混乱。
- 适配接口
- 接口一大好处:允许同一个接口具有多个不同的具体实现。
- 接口中的域
- 接口中的域默认是public,static,final的。
- 接口的域不是接口的一部分,他们被存储在该接口的静态存储区域内。
- 嵌套接口
- 接口可以嵌套在类或者其他接口中。
- 接口与工厂
- 接口时实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式。
初读"Thinking in Java"读书笔记之第九章 --- 接口的更多相关文章
- 初读"Thinking in Java"读书笔记之第二章 --- 一切都是对象
用引用操纵对象 Java里一切都被视为对象,通过操纵对象的一个"引用"来操纵对象. 例如, 可以将遥控器视为引用,电视机视为对象. 创建一个引用,不一定需要有一个对象与之关联,但此 ...
- 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理
用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...
- 初读"Thinking in Java"读书笔记之第八章 --- 多态
再论向上转型 在某些方法中,仅接收基类作为参数,而不是特殊的导出类,会使得程序更容易扩展. 转机 方法调用绑定 前期绑定(编译期绑定):在编译期将一个方法调用和方法主体关联起来. 后期绑定(动态绑定或 ...
- 初读"Thinking in Java"读书笔记之第七章 --- 复用类
组合语法 将对象引用置于新类中,即形成类的组合. 引用初始化方法 在定义处初始化. 在类的构造器中初始化. 在使用这些对象之前,进行"惰性初始化". 使用实例初始化. 继承语法 J ...
- 初读"Thinking in Java"读书笔记之第六章 --- 访问权限控制
包:库单元 包内包含有一组类,他们在单一的名字空间下被组织在一起. 通过import ***.***.*可以将某个包下的所有类导入到当前文件中. 每个Java源文件最多只能有一个public类,且名称 ...
- 初读"Thinking in Java"读书笔记之第四章 ---控制执行流程
true和false Java不允许将数字作为布尔值使用. 所有条件表达式都将布尔值作为判断条件,决定执行路径. if-lese 迭代 while,do-while,for为三个迭代语句. ,逗号操作 ...
- 初读"Thinking in Java"读书笔记之第三章 --- 操作符
更简单的打印语句 导入自己编写的静态类库,即可使用print();打印 使用Java操作符 操作符:+,-,*,/,=,==,!=,+=,?:,%等 几乎所有操作符都只能操作"基本类型&qu ...
- [core java学习笔记][第六章接口与内部类]
接口域内部类 接口 描述类具有什么功能,不给出具体实现. 内部类 用于设计协作关系的类集合 代理 实现任意接口的对象. 6.1 接口 接口声明 public interface Comparable ...
- Effective Java读书笔记——第三章 对于全部对象都通用的方法
第8条:覆盖equals时请遵守通用的约定 设计Object类的目的就是用来覆盖的,它全部的非final方法都是用来被覆盖的(equals.hashcode.clone.finalize)都有通用约定 ...
随机推荐
- redis 的简单使用
Redis是什么:内存型数据库,内存取数据与db硬盘取数据.......速度没得比,啥 内存,我直接创建变量就OK了嘛,用redis 干嘛,抱歉我只会开车,无法解答. 为什么使用 :在一些高并发业务 ...
- glup简单应用---gulpfile.js
//npm install gulp -g (global环境) //npm install gulp --save-dev (项目环境) //在项目中install需要的gulp插件,一般只压缩的话 ...
- python+selenium测试
网址http://blog.csdn.net/u011541946/article/category/6788788/1
- Flume+Sqoop+Azkaban笔记
大纲(辅助系统) 离线辅助系统 数据接入 Flume介绍 Flume组件 Flume实战案例 任务调度 调度器基础 市面上调度工具 Oozie的使用 Oozie的流程定义详解 数据导出 sqoop基础 ...
- DAY 22初识面向对象
一.两种编程思想 1.面向过程编程 核心是'过程',过程指的是解决问题的步骤,就是先干什么再干什么 基于面向过程思想编写程序相当于写一条流水线,是一种机械式的思维方式 优点:解决问题的思路清晰,可以把 ...
- 解密:Amazon亚马逊产品Listing关键词刷单排名原理
第一:基本概念 在阅读正文之前,请先理解下面的几个基本概念. 核心词[高频词.热词.大词.主词]:长度大约1~2个单词构成,指每天搜索量比较多的词,每个行业对高频词的划分不一样,这个主要看自己 ...
- UML图概述
UML图概述 UML是一种分析设计语言,即一种建模语言.UML是由图形符号表达的建模语言,其结构主要包括视图.图.模型元素和通用机制四部分. UML包括5种视图,分别是用户视图.结构视图.行为视图.实 ...
- vue 用huilder打包APP时,安卓按返回键就退出App改为按两次再退出App
做vue项目时,用Hbuilder打包APP,在安卓下按返回键就是退出了APP,百度了下.都是使用到MUI来解决的,自己也记录下. 在main.js里面引入mui.js并使用. import mui ...
- multiThread (一)
并发系列(1)之 Thread 详解 阅读目录 一.线程概述 二.线程状态 三.源码分析 1. native注册 2. 构造方法和成员变量 3. start 方法 4. exit 方法 5. 弃用 ...
- 最简单的RPC框架实现
通过java原生的序列化,Socket通信,动态代理和反射机制,实现一个简单的RPC框架,由三部分组成: 1.服务提供者,运行再服务端,负责提供服务接口定义和服务实现类 2.服务发布者,运行再RPC服 ...