为什么 Java 中的每个对象都隐式扩展 java.lang.Object 类?

2024-03-28

我已经用 Java 编程有一段时间了,但是当我试图解释什么是 Java 时,java.lang.Object是给朋友上课的,我除了简单的一句台词之外想不出更多的话:

Java中的所有对象都扩展java.lang.Object隐含地

我不太确定为什么要这样做。

所以,我查看了源代码GrepCode http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/lang/Object.java,希望能找到一些线索。现在我知道什么是java.lang.Object它是什么以及它的作用是什么,我想知道是否有任何具体原因说明为什么这样设计。

我的问题仍然存在:为什么每个对象都应该扩展java.lang.Object?


我想说原因是java中的所有对象都有一个通用的API来支持基本功能,例如

  • 同步 - wait, notify, notifyAll
  • 垃圾收集 - finalize
  • 收藏支持 - hashCode, equals
  • 对象克隆 - clone

还有每一个物体

  • 有一个它所属的类 -getClass
  • 可以将自身表示为字符串,因为我们是 人类并且可以读取字符串 -toString
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Java 中的每个对象都隐式扩展 java.lang.Object 类? 的相关文章

随机推荐

  • 关于如何制作影响 Angular 中所有组件的主题机制的指南?

    问题 我需要有关如何在 Angular 中编写机制以在我的应用程序中全局设置组件的 外观和感觉 的指导 请注意 我正在努力学习 ngrx 平台 https github com ngrx platform我认为这将是一个有趣的设计约束 然而
  • 为什么 tabindex='-1' 阻止键盘

    经过几个小时的尝试找出键盘输入在引导模式中不起作用的原因后 我终于成功地找出了问题 这是我从未想到过的事情 但通过纯粹的消除过程发现了它 有了tabindex 1 存在于 div 对于引导程序中的模态 它完全停止键盘输入 我本以为数据属性d
  • 在 Laravel 5 中安装 Guzzle

    如何将 Guzzle 安装到 Laravel 5 中 我在我的项目中使用 laravel 但我需要像 guzzle 这样的库来让我在 laravel 中轻松使用curl 任何机构可以帮忙吗 打开终端 切换到你的 laravel 项目根目录并
  • 检索 DynamoDB 上以指定文本开头的列的所有项目

    我在 DynamoDB 中有一个表 Id int hash key Name string 还有很多列 但我省略了 通常 我只是根据项目的 ID 提取和更新项目 这个模式非常适合这种情况 然而 要求之一是有一个基于名称的自动完成下拉框 我希
  • ANTLR 4 - 树模式匹配

    我试图理解 ANTLR 4 中的解析树匹配 所以为此 我有以下java代码 package sampleCodes public class fruits public static void main String args int a
  • 如何检查正则表达式是否完全匹配字符串,即字符串不包含任何额外字符?

    我有两个问题 1 我有一个正则表达式 A Z a z 0 2 d 我正在使用Python的re finditer 匹配适当的字符串 我的问题是 我只想匹配不包含额外字符的字符串 否则我想引发异常 我想捕捉以下模式 大写字母 后跟 0 1 或
  • 如何从一个 Instagram 帐户获取关注者列表?

    我正在建立一个网站 我需要的只是一个 Instagram 帐户的关注者列表 我已经完成了使用 auth 2 0 验证我的网络应用程序的步骤 我刚刚意识到 通过此身份验证 我只能访问每个访问令牌所属帐户的关注者 有没有其他方法可以从我想要的帐
  • 如何在 ubuntu 12.04 中安装 python-matplotlib?

    当我尝试时 sudo apt get install python matplotlib 我收到以下错误 Reading package lists Done Building dependency tree Reading state i
  • `yield from foo()` 和 `for x in foo(): Yield x` 之间的区别

    在Python中 大多数yield from的例子都是这样解释的 yield from foo 类似于 for x in foo yield x 另一方面 它似乎并不完全相同 并且有一些魔法 我对使用一个执行我不理解的魔法的函数感到有点不安
  • 无法使用 Require.js 调用函数

    我尝试使用 require js 为我的 node js 服务器编写一个模块 它只返回我想从 url 获取的对象 但不知何故 我无法返回用我的方法获得的值 http get 在我返回值后执行 所以我只是得到 未定义 但为什么呢 请你帮助我好
  • 如何检测 2 的补码乘法溢出?

    在我正在阅读的一本书中 以下函数用于确定 2 的补码整数乘法溢出 int tmult ok int x int y int p x y return x p x y 虽然这有效 但我如何证明它在所有情况下的正确性 当发生溢出时如何确保 p
  • 在 Windows Server 上运行的 Java 应用程序可以通过 Windows 身份验证连接到 SQL Server

    在提出问题之前 让我先介绍一些背景知识 我在一家主要运行 Windows 的商店 我们有几个批处理应用程序在 Windows 服务器上运行 主要是 2003 年 大多数批处理应用程序都是用 C 和 C 编写的 然而 我们有一些用 Java
  • 如何通过命令行检查 Visual Studio 更新?

    为了简化我的虚拟环境设置 我正在使用巧克力味 http chocolatey org自动化我的虚拟机 因为我可以运行cinst安装 Visual Studio 的命令 c gt cinst VisualStudio2012Professio
  • tangelgram 的彩色线 - 包 ape 函数 cophyloplot

    我正在尝试对包含相同分类单元的两棵树进行系统发育比较 我想根据隔离站点为连接着色 我原以为我已经成功执行了此操作 但我的工作流程中存在错误 即彩色线与隔离站点不准确对应 我想知道您是否有任何见解 请在下面找到我的可复制示例 site lt
  • firebase导入服务抛出错误

    我正在使用 firebase 函数 我想使用服务帐户密钥 json 来初始化App 并将其放入凭证中 但出现错误 类型参数 type string project id 字符串 private key id 字符串 私钥 字符串 clien
  • 从字节数组中读取 C# 中的 C/C++ 数据结构

    从数据来自 C C 结构的 byte 数组填充 C 结构的最佳方法是什么 C 结构看起来像这样 我的 C 很生锈 typedef OldStuff CHAR Name 8 UInt32 User CHAR Location 8 UInt32
  • 随着利润增加,如何在止损和当前价格之间保持 10 点的利润差距

    我试图在解决方案中添加另一个条件 当交易盈利 10 点时 我希望止损移动 10 点 更具体地说 假设我设置了一个挂单买单 止损是低于开盘价 10 点 止盈是 50 点 如果交易盈利 10 点 则止损将向上移动 10 点 如果交易盈利 20
  • 有没有更好的写法 ||在单个 if 语句中[重复]

    这个问题在这里已经有答案了 想知道是否有更好的方法来编写下面的代码 我希望我的 if 语句忽略所有键码 但这样写似乎很混乱 如下所示 thanks if event keyCode 9 event keyCode 91 event keyC
  • 为什么 ((object)(int)1).Equals(((object)(ushort)1)) 产生 false?

    我有这样的情况object我想检查与另一个是否相等object public static bool Equals object a object b return a Equals b 当出现问题时a 1 integer and b 1
  • 为什么 Java 中的每个对象都隐式扩展 java.lang.Object 类?

    我已经用 Java 编程有一段时间了 但是当我试图解释什么是 Java 时 java lang Object是给朋友上课的 我除了简单的一句台词之外想不出更多的话 Java中的所有对象都扩展java lang Object隐含地 我不太确定