Object class as super class in Java
Off the top of my head
Defining 'Object' as the root class ensures the VM can rely upon the interface provided for utility methods such as equals, clone, hashcode etc
The Garbage collector can ensure anything that the user deemed reconcilable can be executed in the finalize method
It's what we call the axiom of object-oriented programming in Java. Every single abstraction in your code is an object. It contains a few things that are applicable to every peace of information you use in your code:
equals
andhashCode
methods to establish an equality theory within the given abstraction (see corresponding javadoc);toString
to represent an object in human-readable (probably, only programmer-readable) format (because most of us still use displays and keyboards);getClass
to provide reflection capabilities on the given abstraction;- some methods to organize object-oriented runtime (garbage collection, synchronization, etc.).
If you learn Java, it is best for you to study the "Inheritance" section of whatever book you use and then try to answer this question yourself.
That is a good question. Java chose to make a single class be the ultimate parent class for everything so that there is an easy way to pass around any arbitrary object, without needing to know its type (i.e. you can use the declared type of Object to refer to every single item in the type system, even primitives using their wrapper classes). However, there are OOP languages such as C++ where there is no universal base class as in Java. Another benefit to having a universal base class is that logic dealing with the superclass does not have to be special cased for top-level classes (with the exception of the universal base class, Object, itself).