为什么所有的Java类都继承自Object

    a.jpg
    首先,在Java中,Object类是所有类的父类-即超类(基类),这点我想接触过Java的同学都知道。然而你们想过为什么所有类默认继承Object吗?如何实现的呢?
    今天我们就来实验探讨一下,我们先使用JDK1.8来进行测试。
编写一个HelloWorld为例:
public class Test{
	
	public static void main(String[] args){
		System.out.println("hello world");
	}
	
}
我们反编译后,代码如下:
import java.io.PrintStream;

public class Test
{

    public Test()
    {
    }

    public static void main(String args[])
    {
        System.out.println("hello world");
    }
}
这里我们可以发现类名处没有发生变化,只是显式的定义了一个无参构造,也就意味着在编译期间没有发生改变,这时我们猜想可能是JVM运行时进行了某些处理。
考虑到JDK某些版本有过较大的变动,于是尝试换一个JDK版本,同样的代码,我们使用JDK1.6来反编译,代码如下:
Compiled from "Test.java"
public class Test extends java.lang.Object{
    public Test();
    public static void main(java.lang.String[]);
}
这里我们会发现,在JDK1.6中,类会在编译期间显式的加上extends关键字来达到默认继承Object的效果。
    最后总结一下,JDK1.7及以上版本会在JVM运行期间判断是否定义父级,然后进行继承操作(此处为个人猜测-如有问题还请大佬指出)。而JDK1.6及以前的版本在编译期间会在类名后显式使用extends关键来继承Object类。
作者:徐先森 文章名: 《为什么所有的Java类都继承自Object》
收录情况: 百度已收录
版权说明:若无特别注明,本文皆为 "徐博客”原创,转载请保留出处!

相关推荐

网友评论(已关闭)