请问以下有什么区别

来源:2-2 添加和显示歌曲的方法

飞飞侠91

2019-10-30 10:32:42

请问ArrayList<Song> musicList=new ArrayList<Song>()和

List<Song> musicList=new ArrayList<Song>()这样两个方式定义在本程序有什么本质区别么?

写回答

1回答

好帮手慕酷酷

2019-10-30

同学你好,这两种方式的区别:

ArrayList<Song> musicList=new ArrayList<Song>():用当前类作为引用类型,那么可以访问到ArrayList这个类中的所有公用方法。

List<Song> musicList=new ArrayList<Song>():用ArrayList实现的接口List作为引用类型,属于多态的方式,那么通过list引用可以访问到接口中定义的方法。也就是说ArrayList这个类实现了List接口,除了要实现接口List中声明的方法外,还可以实现额外的一些方法。但是,这种形式就无法调用的List接口以外的方法。

建议使用第二个方式,因为例如,代码List list = new ArrayList();下面通过list来操作集合。代码编写后发现集合使用的不准确,应该使用LinkedList,那么只要修改一行代码List list = new LinkedList();就可以,这行以后的代码不需要修改,因为List接口保证了调用的都是接口中的方法,而ArrayList与LinkedList都实现了List接口。而如果当时用ArrayList list = new ArrayList()这种形式的话,那么list访问到的就可能是ArrayList里独有的方法而非List接口中的方法。这样替换成LinkedList的时候就有可能需要修改很多的代码。降低了代码的耦合性。

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

0

0 学习 · 11489 问题

查看课程