Java:它是Java中,是和亚当夏娃一样的存在


Java:它是Java中,是和亚当夏娃一样的存在
文章图片
Java:它是Java中,是和亚当夏娃一样的存在
文章图片
Java:它是Java中,是和亚当夏娃一样的存在
文章图片
Java:它是Java中,是和亚当夏娃一样的存在
文章图片
Java:它是Java中,是和亚当夏娃一样的存在

【Java】基础21:顶层父类Object
在东方神话体系中 , 人类是如何来的?
是女娲用泥土捏出来的 。

在西方神话体系中 , 人类是如何来的?
是亚当夏娃的后代 。
今天要学的Object类在Java里面 , 就好比是和亚当夏娃一样的存在 。
只不过神话终归只是神话 , 是虚无缥缈的 , 但是计算机里面 , Object类是真真实实存在的 。
Object类是所有类的根类 , 顶层父类 , 就可以理解成是所有类的祖先 , 也就是说所有的类最终都会继承自它 , 包括数组的父类 , 也是Object类 。
用代码证明:
①getClass():得到类名 。
②getSuperClass():得到父类名 。
③Class是指类 , java.lang这是Java里面的一个包 , 类名是Object 。
所以数组的父类也就是Object. 。

如果一个类没有特别指定父类 , 那么默认继承自Object类 。
既然Object类是顶层父类 , 那么按照继承的规则:子类可以调用父类的方法 。
Object类中的方法 , 所有类都可以使用 。 Object类当中包含的方法有11个 。
今天主要学习其中的2个:
一、Object类的toString方法

①创建Person类 , 没有指定父类 , 那它默认继承Object类 。
②在测试类main方法中 , 创建对应的person对象并初始化 。
③调用toString()方法并打印(注意:Person类中并没有定义toString()方法 , 它调用的是父类Object的方法) 。
④打印结果为一串字符 , 前面一大串是我自己在开发工具里面创建的包名 , 就可以理解成文件夹:

  • com是一个总文件夹
  • liuxiaoai946是com里一个文件夹
  • stud02是liuxiaoai946里的一个文件夹
  • commonApi又是stud02里的一个文件夹
那么Person@16e8e0a这串字符到底啥意思呢 , 这就要看下Object类中的toString()方法是啥样的了 。
下图为Object类的toString()方法:
①getClass().getName():得到类的名字 , 类名是Person 。
②Integer.toHexString(hashCode()):hashCode得到的是一个地址值 , 将这个地址值转化成十六进制 , 也就是说16e8e0a是一串16进制的数字 。
好 , 现在问题来了 , 对于开发者来说 , 地址是没多大的意义的 , 我们需要的是你能以字符串的形式展现出来而不是给我一串地址 。
前面学过String类 , 知道它打印出来就是一串字符串 , 而不是一串地址 , 怎么做到的?
因为它将方法重写了 。
下图为String类的toString()方法
String类的父类是Object类 , 它将父类的toString方法重写了 。

【Java:它是Java中,是和亚当夏娃一样的存在】所以 , 当我们新建一个类的时候 , 一般都会将toString()方法重写 , 因为地址对于开发者来说意义不大 , 我们需要的是字符串 。


推荐阅读