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。

posted @ 2021-04-16 17:23  咸瑜  阅读(13)  评论(0编辑  收藏  举报