在Java中,所有类的根类是 Object。

详细解释
-
默认继承: 在Java中,如果你定义一个类时没有明确地使用
extends关键字去继承另一个类,那么这个类会默认继承java.lang.Object类。 下面这两个类的定义是等价的:// 显式继承 Object public class MyClass extends Object { // ... } // 隐式继承 Object (更常见的写法) public class MyClass { // ... } -
继承链的顶端: 无论是Java核心库中提供的类(如
String,ArrayList,Thread等),还是你自己创建的任何类,它们都直接或间接地继承自Object类,这形成了一个以Object为根的、巨大的继承树。java.lang.Object | +-- java.lang.String +-- java.util.ArrayList +-- java.lang.Thread +-- com.example.YourCustomClass <-- 你自己创建的任何类 ... -
提供核心方法: 作为所有类的父类,
Object类提供了一些非常重要的方法,这些方法可以被所有Java对象调用,当你创建自己的类时,你通常会重写(override)这些方法以提供特定于你的类的实现。Object类中一些最常用的方法包括:
(图片来源网络,侵删)-
public String toString()- 功能:返回一个对象的字符串表示形式。
- 默认行为:返回一个由类名、符号和对象的哈希码组成的字符串(
com.example.MyClass@1f32e575)。 - 常见用途:在调试和日志记录中打印对象信息时,通常会重写此方法,以便输出更有意义的描述。
public class Person { private String name; private int age; @Override public String toString() { return "Person{name='" + name + "', age=" + age + "}"; } } -
public boolean equals(Object obj)- 功能:指示某个其他对象是否“等于”此对象。
- 默认行为:通过比较两个对象的内存地址(即 操作符)来判断是否相等,也就是说,只有两个引用指向同一个对象实例时,
equals()才返回true。 - 常见用途:通常需要重写此方法,以基于对象的内容(如属性值)来判断是否相等,重写
equals()时,几乎总是需要同时重写hashCode()方法。
public class Person { private String name; private int age; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } } -
public int hashCode()- 功能:返回该对象的哈希码值,用于在哈希表(如
HashMap,HashSet)中确定对象的存储位置。 - 重要约定:Java规定,如果两个对象通过
equals()方法比较是相等的,那么它们的hashCode()方法必须返回相同的整数,反之则不成立。 - 常见用途:当你的对象需要被用作哈希表的键时,必须正确重写此方法。
- 功能:返回该对象的哈希码值,用于在哈希表(如
-
protected Object clone() throws CloneNotSupportedException
(图片来源网络,侵删)- 功能:创建并返回此对象的一个副本(浅拷贝)。
- 常见用途:实现对象的克隆功能。
-
protected void finalize() throws Throwable- 功能:当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。注意:此方法已不推荐使用,在Java 9中被标记为
deprecated。
- 功能:当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。注意:此方法已不推荐使用,在Java 9中被标记为
-
public final Class<?> getClass()- 功能:返回此
Object运行时的类,返回的是一个Class对象。 - 常见用途:用于反射机制,获取类的信息(如类名、字段、方法等)。
- 功能:返回此
-
public void notify(),public void notifyAll(),public final void wait()- 功能:这些方法用于多线程间的通信和同步。
-
Object 类是Java类层次结构的根基,它为所有对象提供了通用的行为和契约,理解 Object 类及其核心方法(特别是 toString(), equals(), hashCode())是掌握Java面向对象编程的关键一步。
