Why Object class is the super class for all classes in Java?


Java.lang.Object class is the root or superclass of the class hierarchy, which is present in java.lang package. All predefined classes and user-defined classes are the subclasses from Object class.

Why object class is a superclass

Re-usability

  • Every object has 11 common properties, these properties must be implemented by every Java developer.
  • To reduce the burden on the developer SUN developed a class called Object by implementing all these 11 properties with 11 methods.
  • All these methods have generic logic common for all the subclasses, if this logic is not satisfying subclass requirement then subclass can override it

Runtime polymorphism

  • To achieve runtime polymorphism so that we can write a single method to receive and send any type of class object as an argument and as return type.

Common functionalities of every class object

 Comparing two objects

  • public boolean equals(Object obj)

Retrieving hashcode

  • public int hashcode()

Retrieving the run time class object reference

  • public final Class getClass()

Retrieving object information in String format

  • public String toString()

Cloning object

  • protected Object clone() throws CloneNotSupportedException

Object clean-up code/ resources releasing code

  • protected void finalize() throws Throwable

To wait for current thread until another thread invokes the notify()

  • public final void wait() throws InterruptedException

To wait for current thread until another thread invokes the notify() a specified amount of time

  • public final void wait(long timeout) throws InterruptedException

To wait for current thread until another thread invokes the notify() a specified amount of time

  • public final void wait(long timeout, int nano) throws InterruptedException

Notify about object lock availability to waiting thread

  • public final void notify()

Notify about object lock availability to waiting threads

  • public final void notifyAll()

Example

Live Demo

class Thing extends Object implements Cloneable {
   public String id;
   public Object clone() throws CloneNotSupportedException {
      return super.clone();
   }
   public boolean equals(Object obj) {
      boolean result = false;
      if ((obj!=null) && obj instanceof Thing) {
         Thing t = (Thing) obj;
         if (id.equals(t.id)) result = true;
      }
      return result;
   }
   public int hashCode() {
      return id.hashCode();
   }
   public String toString() {
      return "This is: "+id;
   }
}
public class Test {
   public static void main(String args[]) throws Exception {
      Thing t1 = new Thing(), t2;
      t1.id = "Raj";
      t2 = t1; // t1 == t2 and t1.equals(t2)
      t2 = (Thing) t1.clone(); // t2!=t1 but t1.equals(t2)
      t2.id = "Adithya"; // t2!=t1 and !t1.equals(t2)
      Object obj = t2;
      System.out.println(obj); //Thing = Adithya
   }
}

Output

This is: Adithya

Updated on: 24-Feb-2020

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements