接口的变量(引用变量)

在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接口定义的方法是不可以被访问到的。接口变量只能调用接口本身提供的方法(在类中被重写的)
即当把实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量时,那么该接口变量就可以调用被类实现的接口中的方法
实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值