java中,Collection c = new ArrayList(); Collection 中的toString()方法

java中,Collectionc=newArrayList();然后调用c.toString()方法的时候用的是AbstractCollection类里面的toStri... java中,Collection c = new ArrayList(); 然后调用c.toString()方法的时候用的是AbstractCollection类里面的toString()方法吧,现在问题就出来了,Collection c = new ArrayList();这个不是向上转型了吗?现在的c只能用Collection里的方法吧?而AbstractCollection虽然是ArrayList的父类,但是AbstractCollection还是Collection的子实现接口啊。Collection大呀,这个c能用AbstractCollection里的toString方法?应该只能用Collection的或者Collection父类的吧。好纠结
AbstractCollection还是Collection的子实现抽象类啊不是接口,刚才急打错了
展开
 我来答
guozs1982
2011-11-14 · TA获得超过178个赞
知道小有建树答主
回答量:293
采纳率:100%
帮助的人:209万
展开全部
看下类的定义:
public class ArrayList<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable
public abstract class AbstractList<E>extends AbstractCollection<E>implements List<E>
AbstractCollection重写了toString,其他都没有,明白了?
追问
大哥,这个我知道呀,但是 Collection c = new ArrayList() 的时候,不是向上转型了吗?就限制了c吧?然后c就不能用子类特有的方法了吧?只能用Collection 自己的方法或者Collection的父类的方法吧?
追答
如果子类重写了父类的方法,即使声明的对象是父类的对象,调用的方法也是子类的方法啊
当你调用toString的时候,先找ArrayList的,发现没有,然后找AbstractList,还没有,然后找到AbstractCollection中的toString
你可以写个简单的程序试一下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式