程序是这样的:
import java.util.*;
public class test{
public static void main(String args[]){
Collection c =new ArrayList();
c.add("hello");
c.add(new Integer(100));
System.out.println(c);
}
}
打印结果:[hello,100]
疑惑:1.Collection 只是个接口,怎么可以直接Collection c 啊
2.最后打印的时候 c是调用toString()方法,但是toString 方法并没有被重写啊,输出的结果怎么会是那样的呢?
help,不胜感激。
import java.util.*;
public class test{
public static void main(String args[]){
Collection c =new ArrayList();
c.add("hello");
c.add(new Integer(100));
System.out.println(c);
}
}
打印结果:[hello,100]
疑惑:1.Collection 只是个接口,怎么可以直接Collection c 啊
2.最后打印的时候 c是调用toString()方法,但是toString 方法并没有被重写啊,输出的结果怎么会是那样的呢?
help,不胜感激。
1.有点明白了。是说可以声明 interface类型的变量? 所以 才有Collection c..2.我查询了API,怎么没有看到 ArrayList类中有 toString()方法啊???
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.ArrayList<E>ArrayList的父类都是抽象类
再说是不是抽象类有什么关系?
ArrayList类中没有重写toString()方法,
而ArrayList的父类除了java.lang.Object 都是抽象类,所以也没有重写toString()方法。这样的话,打印的结果怎么会是那样?java.lang.Object
java.util.AbstractCollection <E>
java.util.AbstractList <E>
java.util.ArrayList <E>
刚刚想到了,抽象类里也可以有普通方法,然后去查了下ArrayList的父类。在AbstractCollection类中就重写了 toString()方法。非常感谢。
小弟是乞丐,分数回报无能为力,所以只能心谢各位了。