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的子实现抽象类啊不是接口,刚才急打错了 展开
AbstractCollection还是Collection的子实现抽象类啊不是接口,刚才急打错了 展开
1个回答
展开全部
看下类的定义:
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,其他都没有,明白了?
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
你可以写个简单的程序试一下
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询