接口的变量(引用变量)
在Java中,引用变量实际上是一个指针,它指向的是堆内存中的对象实例。
例:
List<?> list=new ArrayList<?>
Map<?,?> map=new HashMap<?,?>
其中List只是ArrayList实现的一个接口而不是它的父类,不是父类引用指向子类对象。
同样Map也只是HashMap实现的一个接口而不是它的父类,不是父类引用指向子类对象
为什么一般都使用List list=new ArrayList(),而不用ArrayList alist=new ArrayList()呢?
问题在于List有多个实现类(即实现了List接口的类),如LinkedList或者Vector等等。现在你用的是ArrayList,也许哪一天你需要换成其他的实现类呢?这时就只要list=new LinkList()就行了。
注意事项
list只能使用ArrayList中已经实现了的List接口中的方法,ArrayList中那些自己的、没有在LIst接口定义的方法是不可以被访问到的。接口变量只能调用接口本身提供的方法(在类中被重写的)。
即当把实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量时,那么该接口变量就可以调用被类实现的接口中的方法。
实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。
接口的变量(引用变量)相关推荐
- linux快捷键 赋值,2_Shell语言———bash的快捷键、变量声明、引用变量及变量替换...
一.初识bash Bash是一种解释型语言,但它也提供了交互式接口,支持变量,因此提供了编程环境,所以可以称bash为程序语言. 解释型语言属于弱类型语言,其特点为: 1.它不强制区分变量类型,即无论 ...
- c++中引用变量的使用
c++中引用是已定义的变量的别名,例如,如果把b作为a变量的引用,则可以交替使用a和b来表示该变量.引用的主要用途是作为函数的形参,通过将引用变量作为参数,函数将使用原始数据,而不是副本(把变量之间传 ...
- shell脚本里变量引用 数组引用 遍历数组
shell脚本里变量引用 数组引用 遍历数组 1.定义的变量-引用变量方式 name=zhangecho $name 或 echo ${name} 2.命令执行结果-引用变量方式 两种方式$()和`` ...
- 【C++】引用变量--1.如何创建引用变量
目录 引用变量 1.1 创建引用变量 引用变量的程序示例 程序运行结果 引用变量 引用是对已定义的变量的别名,比如一个人的大名和小名,这指的都是一个人.区别指针与引用变量 1.1 创建引用变量 比如要 ...
- c++中的引用变量,以及引用变量作为函数形参的教程
目录 引用变量的说明: 引用变量的格式: 引用变量作为函数形参的好处 引用变量的说明: 1.引用的作用是给变量起别名,可以当做变量来用.只能在引用初始化的时候给引用变量赋值 2.引用的本质是弱化的指针 ...
- 接口引用变量调用方法
接口可以创建对象的引用,指向实现了该接口的类的对象.但引用变量只能调用接口本身提供的方法(在类中被重写的),例如: interface A{ public abstract void read(); ...
- 【Android RTMP】x264 图像数据编码 ( Camera 图像数据采集 | NV21 图像数据传到 Native 处理 | JNI 传输字节数组 | 局部引用变量处理 | 线程互斥 )
文章目录 安卓直播推流专栏博客总结 一. NV21 数据传入 Native 层 二. jbyte * 数据类型 ( Java 中的 byte[] 数组传入 JNI 处理方式 ) 三. 局部引用处理 四 ...
- java根据父类找子类_在java中实现多态时,可以通过父类变量引用子类的对象。_学小易找答案...
[单选题]对于字符串s="java",下面哪个选项返回字符在字符串中'v'的位置( ). [简答题]汽车核保的主要内容 [判断题]在java中产生子类对象时,直接调用子类的构造方法 ...
- JS高级程序设计读书笔记(第五章 引用变量)
第五章 引用变量 Object 创建 Object 实例的方式有两种.第一种是使用 new 操作符后跟 Object 构造函数,另一种方式是使用对象字面量表示法. var person = new O ...
最新文章
- p1164 小A点菜 题解——背包初步
- kubernetes(k8s)使用声明式管理与 创建yaml模板文件
- 【转载】十年学会编程
- java正则表达式去除xml标签之间的空格_HTML解析器——htmlparser2使用详解,换个姿势解析html和xml
- 智慧屏鸿蒙系统的优势,荣耀智慧屏成热点 搭载的鸿蒙系统有何优势?
- vivo NEX 3 5G真机曝光:瀑布屏+升降镜头
- postman中文设置_严选 | Elastic中文社区201902错题本
- rtk采点后如何导入cad_ZEMAX:如何导入CAD物体
- RailsCasts21 Super Simple Authentication 超级简单的验证机制
- urllib库(三)parse模块:quote()/quote_plus(),unquote()/unquote_plus(),quote_from_bytes()
- taobao_seckill_anyi项目配置与运行main.py(7)【图文并茂的小白级教程】
- 手机电视重蹈IPTV覆辙 广电电信争持催生融合标准
- 2007 合成孔径雷达成像算法与实现 各figure的matlab实现(第三章 - 图3.2)
- 学mysql需要英语水平多高_大学英语专业挂科率高吗
- 超市仓库商品库存管理系统
- oracle sql查询字段中以“;”分割的字符串,转化成对应的,以“;”分割的文字串
- 3DMax怎么导出材质到unity?
- openjudge 1.7.6 合法C标识符
- android程序自动卸载软件,Android应用静默安装和卸载
- 将于2010年12月31前停用的Errata