接口(Interface)的深入理解
接口(Interface)的深入理解
一:接口是规范(不展开)
二:接口可以看成是一个特殊的类
1: 接口可以定义“接口类型变量”,就好像类可以定义类类型的变量(或者说是引用类型变量)。申明一个类类型的变量,然后我们通常使用构造器创建对象,并把该对象赋值给类类型的变量(或者说引用变量引用到我们创建的对象)。这样,我们就可以通过类类型的变量来操作我们实际new出来的对象。于此类似的,我们也可以创建接口类型的变量(或者说是接口类型的引用变量),并把一个实现了该接口的实现类的对象赋值给接口类型的引用变量(或者说接口类型的引用变量引用到该接口实现类的对象)。通过接口类型的变量,我们便可以调用实现了该接口的类的对象。从这看出,类和接口有相似的地方。它们都有多态的存在
代码如下
2:接口类型的引用变量,我们可以传一个实现该接口抽象方法的匿名内部类(匿名内部类会创建一个实现一个该接口抽象方法的对象)。本质上来说,还是通过接口类型的变量,来调用实现该接口创建出来的对象实例
代码如下
三: 接口可以理解为是一个功能模块
我们自己写的类通过实现Java提供的相应的接口,并重写接口的抽象方法,就可以得到我们想要的功能
举个例子
TreeSet是SortSet的子类,这意味着存入TreeSet的元素(对象),必须要有一个比较大小的方法,否者TreeSet无法保证元素是有序存放的
假设我们存放的是Person类的对象。Person类有name(String),age(int),两个成员变量。我们必须确保TreeSet有一个比较Person类的实例对象的方法
我们用先比较名字的字母顺序,在来比较年龄的大小的方法来排序
在这里我们可以有两种选择
实现Comparable接口,或者实现Comparator接口
先来使用Comparable接口
Person类实现Comparable接口,并重写compareTo()方法(原因:TreeSet在添加对象时,会调用对象的compareTo()来比较对象的大小)
代码如下
注:上述代码没有实现泛型
再来使用Comparator接口来实现
代码如下
结果相同
至于为什么要把Comparator的comparator作为参数传入TreeSet()构造器中,本人也是小白。我目前也不清楚
有人知道的话,可以说一下
分割线
----------------------------------
TreeSet(Comparator comparator)
构造一个空的树集合,它按照由comp指定的比较方法进行排序
转载于:https://www.cnblogs.com/littlelittleprince/p/9225663.html
接口(Interface)的深入理解相关推荐
- go struct 静态函数_Go语言学习笔记(四)结构体struct 接口Interface 反射reflect...
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...
- TypeScript 接口(Interface)
TypeScript 接口(Interface) 本节介绍 TypeScript 各种类型接口的声明及其使用方法,接口在 TypeScript 中是极其重要的,我们使用接口来定义契约,如类型命名.属性 ...
- C#接口(Interface)小结(超详细,你值得拥有!!!)
前言:通过阅读本篇文章能够深入的理解C#中的接口以及接口的实现,推荐刚入门的小伙伴收藏嗷!!! 目录: 一.接口的概念 二.接口的作用 三.接口的特性 四.接口的声明 五.接口的两种实现方式 1.隐式 ...
- 12-Go语言接口interface
接口 在Go语言中接口(interface)是一种类型,一种抽象的类型.相较于之前章节讲到的那些具体类型,接口更注重"我能做什么的问题".接口类型就像是一种约定–概括了一种类型应具 ...
- System Verilog学习笔记—接口interface
目录 0.interface的直观理解 1.使用端口的TB与DUT通信 2.使用接口的TB与DUT通信 3.使用modport将interface中的信号分组 4.接口中的clocking block ...
- java 接口对象_Java面向对象之接口——interface
Java面向对象之接口--interface 什么是接口 一般计算机中的接口分为硬件接口和软件接口. 硬件接口:是指两个硬件设备之间的连接方式,既包括物理上的接口,还包括逻辑上的数据传送协议. 软件接 ...
- Go 学习笔记(35)— Go 接口 interface (接口声明、接口初始化、接口方法调用、接口运算、类型断言、类型查询、空接口)
1. 接口概念 接口是双方约定的一种合作协议.接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节.接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式.类型及结构. 接口内部存 ...
- php中的抽象类(abstract class)和接口(interface)
一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...
- Java接口interface
Java接口interface 1.多个无关的类可以实现同一个接口. 2.一个类可以实现多个无关的接口. 3.与继承关系类似,接口与实现类之间存在多态性. 接口(interface)是抽象方法和常量值 ...
最新文章
- Linux :debian(ubuntu)下安装和使用haskell
- 实现迷你解析器把字符串解析成NestInteger类 Mini Parser
- 关于在Windows Mobile下今日插件使用WTL的问题
- WPF--动态添加控件、访问控件
- 微信小程序源码下载链接
- 求5阶矩阵其对角线上所有元素之和
- java map put报错_java 集合(Map)
- 日志打印工具类LogUtils
- c语言如何输入未知数据类型的_C语言新手踩坑记!大坑小坑全部都是你的!
- Microsoft.mshtml.dll 添加引用及类型选择错误问题解决办法
- java复制文件到指定目录
- 关于web中的字体, .woff, .eot, .svg
- ActiveX控件原理及手动修改
- pdf转cad怎么弄_CAD转PDF怎么弄?在线老师傅教你一招
- java学生奖学金管理系统_java毕业设计_springboot框架的高校学生奖学金评定系统...
- css3实现3d图片旋转效果
- 房地产类软件实战教程,如何写好房地产类软文
- 2020Java后端开发面试题总结(春招+秋招+社招)
- 首次提交代码至github(转载)
- 华为鸿蒙太空人壁纸,华为太空人动态壁纸下载-华为太空人动态壁纸图片高清版-丫丫安卓网...
热门文章
- GitHub也会断供:美国制裁地区帐号都受限,毫无预警,个人页面直接404
- 20项任务横扫BERT!CMU谷歌发布XLNet,NLP再迎屠榜时刻
- Asynchronous CDI Events
- 构建多域名Exchange 2010邮件系统
- LR学习笔记三 之 界面分析
- java disruptor压测_Java并发框架Disruptor实现原理与源码分析(二) 缓存行填充与CAS操作...
- python3 上传文件到目标机器_再见Python 2.7,你好Python 3.7
- NetDevOps — YANG 协议
- Tungsten Fabric SDN — 与 OpenStack 的集成部署
- 工业互联网 — Overview