A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 深知一生短暂 中级黑马   /  2013-9-10 12:51  /  1285 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

List<String> ls=new ArrayList<String>();
想问问大家,老师不是说到这样写很高级吗?但我不明白高级在哪里?
如上,如果将子类提升为接口List,那么子类的特有方法不就是不能用了吗? 都变成只能用共性方法了?
我想详细知道这样写有什么好处

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

3 个回复

倒序浏览
List<String> ls=new ArrayList<String>();
这样的写法是多态的体现。
你的问题:如果将子类提升为接口List,那么子类的特有方法不就是不能用了吗? 都变成只能用共性方法了?
对于你的问题,首先你先查看一下文档,看看List类中的方法的数量和名称,然后对比一下ArrayList类中的方法的数量和名称,你就知道了。ls 可以使用List集合中的方法,如果你想使用子类中的方法的时候,你就可以强制转换成子类的类型。就可以使用子类的方法了。
这样ls集合,list的方法和ArrayList的方法 都能使用。你说比之前
ArrayList<String> ls=new ArrayList<String>();
这样使用是否高级呢?

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
mo﹎雲℡ 发表于 2013-9-10 13:01
List ls=new ArrayList();
这样的写法是多态的体现。
你的问题:如果将子类提升为接口List,那么子类的特有 ...

张孝祥老师那的银行调度就是说我那样写,但他说提升后更高级!!!我清楚用子类引用能用原有方法!!!就是不明白我上面写的为啥是更高级!
回复 使用道具 举报
List<String> ls=new ArrayList<String>();
第一:这种写法使多态的体现,多态的好处还包括指向他的其他子类,就算需要使用子类特有方法,强转一下什么都解决了。
第二:这里面使用了泛型,定义了<String>泛型之后集合中就只能存储String类型的对象。这样就能把运行时期的问题转移到了编译时期。非String类型的对象一存进去就会出错的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马