集合2-2的问题

集合2-2的问题

1、List list=new ArrayList();

list.add("Java");还有list.size()方法、list.remove()方法。

老师,list.add()、size()、remove()等等方法,这里调用的是接口List的方法,还是它的实现类ArrayList的方法?

2、老师,其实我对接口的引用指向实现类实例对象List list=new ArrayList();不是很理解,毕竟不是父类的引用指向子类实例,怎么理解接口的引用指向实现类实例对象?

2、课程里说:add方法将字符串对象存储到一片连续的内存空间,老师这里存储的是对象本身还是对象的引用地址?我个人感觉不可能把对象本身存储到集合里。


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小班 2019-08-12 17:30:54

        同学你好,1、list.add()、size()、remove()等这些方法,调用的是ArrayList重写List接口中的方法,List接口有这些方法,ArrayList重写了这些方法,调用的是ArrayList重写后的add、size、remove等方法!

        2、接口的引用指向实现类实例对象,这里可以理解为与父类的引用指向子类的实例,List list=new ArrayList();-->(可以拆分为)  List  list;    list=new  ArrayList();

    List  list;声明一个类型为List 变量名(对象名)为list  

    new  ArrayList();实例化一个ArrayList的集合

将这个ArrayList集合指向它的父接口   list=new  ArrayList();

在java中所有实现了接口的类,都可以用这个接口来声明对象类型,这是java的规则,与父类的引用指向子类的实例的意思是一样的!

        3、同学的说法是正确的,这里存储的是对象的引用地址!

        如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 鱼儿0001 #1
    老师,你说: List list;声明一个类型为List 变量名(对象名)为list。这句话有问题吧,List是接口不是类,怎么会是声明一个类型为List?还有你说的:在java中所有实现了接口的类,都可以用这个接口来声明对象类型。这句话像是病句,什么叫所有实现了接口的类?因为都没有看懂老师的回复,所以我问的第二个问题还是不懂,老师再解释一下,谢谢!
    2019-08-13 10:54:39
  • 好帮手慕小班 回复 提问者 鱼儿0001 #2
    同学你好,1、首先 ArrayList list=new ArrayList(); 这样是创建一个ArrayList类型的集合,这个是一个ArrayList集合的定义!2、List list = new ArrayList()是接口指向实现类,声明这个集合类型为List,ArrayList类是List接口的实现类,我们可以使用List来接收这个实现类,就好像我们可以这样来说生活中的一个小案例: 飞行 飞行1= 鸟儿; 飞行 飞行2=飞机; 飞行 飞行3=气球; 我们可以用飞行来接收鸟儿、飞机、气球等具有相同飞行特性的不同对象类型! 通过接口来接收具体的实现类,这在以后的开发中是非常常用的一种形式!如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-08-13 14:38:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师