Object class
In Java, the Object
class is the root of the class hierarchy. Every class in Java implicitly extends the Object
class if it does not extend any other class. This means that the Object
class is a superclass (direct or indirect) of all other classes in Java.
In Java, the Object
class is like the grandparent of all other classes. Think of it as the most basic type of thing from which everything else is derived. Here’s a simple way to understand it:
Root of All Classes: In Java, every class you create is automatically considered a descendant (like a child or grandchild) of the
Object
class. This means that all classes inherit some basic characteristics from theObject
class, just like you might inherit certain traits from your grandparents.Common Methods: The
Object
class provides several methods that are common to all objects in Java. For instance, it has methods to:Compare objects (
equals
): To see if two objects are the same in some way.Calculate a hash code (
hashCode
): A unique identifier for the object, useful in some advanced data structures.Create a string representation (
toString
): To get a text description of the object.Clone an object (
clone
): To make an exact copy.Notify and wait (methods like
wait
andnotify
): Used in multi-threading for communication between threads.
Default Behavior: These methods provide default behavior that can be the same for all objects (like
hashCode
andgetClass
) or can be overridden (likeequals
andtoString
) in your own classes to suit your specific needs.Garbage Collection and Finalization: The
Object
class also has a method calledfinalize
, which is called by the garbage collector before an object is removed from memory. This can be useful for cleanup, but it's generally not recommended to rely on this method for important tasks due to its unpredictable nature.
The Object
class in Java is a foundational class that provides basic functionality common to all objects. It's like a default set of features and behaviors that every object in Java can use or build upon.
Key Methods of the Object Class
The Object
class provides several methods that are therefore available in all Java objects. Some of the most commonly used methods are:
public String toString()
: Returns a string representation of the object. Many classes override this method to provide a meaningful description of the object.public boolean equals(Object obj)
: Compares the calling object with the object passed as a parameter. The default implementation compares object references, not the content. Many classes override this method to provide content-based equality.public int hashCode()
: Returns a hash code for the object. This method should be overridden in such a way that if two objects are equal according to theequals(Object)
method, they must have the same hash code.protected Object clone() throws CloneNotSupportedException
: Creates and returns a copy of the object. The default implementation is a "shallow copy," meaning it doesn't copy the objects that the current object refers to, just their references.public final Class<?> getClass()
: Returns the runtime class of the object. This method isfinal
and cannot be overridden.public final void notify()
,public final void notifyAll()
,public final void wait()
: These methods are used for thread synchronization.
Example Usage
Here's a simple example to illustrate the use of some of these methods:
public class MyClass {
int x;
public MyClass(int x) {
this.x = x;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
MyClass other = (MyClass) obj;
return x == other.x;
}
@Override
public int hashCode() {
return Integer.hashCode(x);
}
@Override
public String toString() {
return "MyClass{x=" + x + "}";
}
public static void main(String[] args) {
MyClass obj1 = new MyClass(5);
MyClass obj2 = new MyClass(5);
System.out.println(obj1.equals(obj2)); // Output: true
System.out.println(obj1.hashCode() == obj2.hashCode()); // Output: true
System.out.println(obj1.toString()); // Output: MyClass{x=5}
}
}
In this example, we override the equals
, hashCode
, and toString
methods to provide custom implementations. These methods originally come from the Object
class but are overridden to suit the specific needs of MyClass
.
Understanding the Object
class and its methods is crucial for Java programming, as they provide fundamental behaviors that are inherited by all Java classes.
COSC-1437 / ITSE-2457 Computer Science Dept. - Author: Dr. Kevin Roark