Java中的所有类都继承自Object,如何实现的呢?

我们用过Java的都知道Java中所有类都是Object类的子类,但我们创建类的时候并没有写上extend Object,那这到底是怎样实现继承关系的呢?本篇文章就来探讨下这个疑问。

首先,我们再思考个问题:
Java中类的继承只能是单继承,那为什么所有类都是Object的子类的情况下,所有类还能继承一个类呢?
解答:Object类、Parent类、Child类
Parent类继承Object;
Child类继承Object类;
Child类继承Parent类;
在这里插入图片描述
  如图所示,Child类并不是继承Object类的同时继承Parent类,而是Child继承Parent类,Parent类再继承自Object类。其实就是“子类的子类也是子类”,所以会说所有类继承自Object,因为所有类都是Object的子类啊!!继承的传递性

接下来 ,就是如何实现Java中所有类默认继承Object类呢?
  当我们没有写extend时,默认会是有extend Object的,但我们看不到啊!这时候可能想到:这是不是我们写的Java文件在被编译器编译成文件的时候加上的呢?或者是不是虚拟机运行二进制代码时加上的呢?这两种可能都会有,实际如何验证呢?如果是编译器编译java文件成class文件时加上的,那我们将class文件反编译会不会就有了extend Object?有,则说明是编译器处理的;没有,则说明是虚拟机处理的。
具体做法:
  可以用JDK自带的反编译工具javap,进行反编译class文件。手动编译和反编译也是我们常用的技能,详情请见我的另一篇文章:
怎样编译java文件和反编译class文件

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值