0201问题回答


0x0.如何从源码角度分析问题

根据图中点点

  1. 点击ArrayList(ctrl+xxx)进入源码
  2. ctrl+alt+u查看继承树,梳理下应该从哪里找toString的重写
  3. [注意] 图中蓝色线是extends类 绿色虚线是implements 绿色实线是接口implements接口
  4. [注意] extends 都是s 第三人称单数

集合源码之关系树

0x1.toString方法的寻找

toString 方法我已经给找了

AbstractCollection类中

==操作==

  1. 需要把继承图关掉
  2. 然后再arraylist类中按下ctrl+H 右面查看继承关系类表
  3. 双击进入AbstractCollection类中

图示操作

集合源码的点击

进入源码不要慌

画虎画皮难画骨

觉得难是因为骨没有摸到,看着一堆英语与方法心里忐忑

Alt+7查看方法关系结构,左边会跳出来

也可以点击左边的structure

如何点击跳出方法表

[注意]我们发现左边Structure边上有个7,意思是让你alt+7就能点

好啦,我们在左边找找toString方法有没有把

toString方法

嗨,找到了哎,棒,倒数第二个

[注意] 也可以在类中ctrl+f直接搜toString

双击toString,看看源码

toString源码解析

0x2 总结(应该懂得)

  1. [本质] 集合的一个个数据放在一个迭代器里面

  2. [目的] 为什么不直接在arraylist里重写 ? 因为写在上有同toString有更广的作用域,减少冗杂

  3. 父类引用调用方法时,如果此时方法被子类重写,调用被重写的方法

  4. 记住一些快捷键

  5. ArrayList继承关系

    Object(万物皆对象)
    	->Collection
    		->AbstractCollection
    			->AbstractList
    				->ArrayList

    0x3 知识补充

理论上讲万物都有object类中的方法

除了基本类型23333

为什么时面相对象编程?

因为我们或近或远都是继承了object类

object对象,我们继承了对象,本质就是一个对象(多态)

所以一直在object范围里去写程序,面向object类编程

object类中的方法

你可以继续拓展

集合数据放在迭代器里,迭代器是个啥?本质?

在以后的学习过程中除了领悟面向对象编程外还要慢慢领悟什么时面向接口编程,因为我们以后都是面向接口编程


文章作者: Jinxin Li
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jinxin Li !
  目录