Collection与toString的调用问题

356 阅读1分钟

看如下代码,为什么Collection作为接口并没有对toString作重写,却能调用toString?

public class Text {
    public static void main(String[] args) {
        Collection coll = new ArrayList();
        coll.add("fdf");
        coll.add("ffdg")
        System.out.println(coll);//[fdf, ffdg]
  }

虽然你的引用是父类接口Collection,但是它的真身实际上是Arraylist类型,只是将子类实例赋值给了父类引用,故coll.toString实际上是调用了Arraylist重写的toString。