这篇都是浅尝则止,不针对问题,只是闲谈。
对于每个学习java的人,最不陌生的应该都是封装继承多态吧。尤其是继承,也许你会说extends,也许你会想到单继承的特性,但其实每个类都是直接或间接的继承自Object类,这个大家也许不陌生,但具体的呢?我明明没写过extends,它为什么就继承了,而且它里面有什么。这些问题可能不会出现在你的代码中或者面试中,但不妨让我们秉着对技术的好奇来看看,我相信作为这样一种“万物起源”,它肯定也能帮助我们更好的学习java。
Object类的继承是在编译阶段实现的,如果看到你的类没有继承关系,编译过程就会帮你去extends,这可以经过反编译看到。那么Object里都有什么呢。
注册本地方法
获得类的方法
计算hashcode
equals比较
拷贝clone
toString方法
两种唤醒
wait方法
最后一个finalized
到这里就是Object类的全部内容了,其实能让人联想到很多东西吧,包括JNI相关,hash一家,equals与==的关系,深拷贝浅拷贝,为什么重写toString,多线程的wait与sleep,垃圾回收等等。所谓闲聊,自然不讲这里的任何问题,但也应该引起思考。在我看来,不论面向对象思想还是说这个顶级父类Object,作为java各种含义上的起点,它们都时刻提醒我们持续学习的重要性。