Java - 刚学习集合类时遇得到的疑惑 --
这是 集合类 各个接口 、 类 的继承关系图
疑惑1:
为什么可以:
Collection coll = new ArrayList() 为什么可以这么写?
因为: 这就是Java 的 多态 ,Collection 是 ArrayList的爷接口 这不就是向上转型吗?
你ArrayList有的东西 不就是我Collection 重写过去的吗? 所以说: 父接口也允许多态!
我coll用的方法是ArrayList重写 collection 的 ,但在编译的角度上讲 : 我coll用的方法
其实是Collection的。 总结就是:因为Java允许多态 所以 也允许父接口多态.
疑惑2:
为什么重写类的toString方法后 打印出来的就不是地址了?而若不重写则是地址?
这是因为啊: 你重写类的toString后打印出来的就是你自定义想打印的东西,若你不特定重写
那么因为 Java 中 所有的类都继承与Object ,Object 的 toString 是打印地址的,所以说:
当你调用System.out.println()打印东西时,它会自动调用Object的toString方法 那么它打印的
就是地址(没重写toString 的情况下),反之,若重写了,那么就自动调用你重写的toString的方法了
所以打印的就是字符串了....至于为什么String类和StringBuffer 那些 直接打印的就是字符串 ,原因
就在如此,他们重写了toString。
本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14667972.html