What is the reason for having some methods public and some protected in Object class.
In order to use the protected members, the Object class has to be inherited and then only base class objects can call the protected methods, and not super class object. Why is there such kind of restriction.
Naresh Chaurasia wrote:only base class objects can call the protected methods, and not super class object.
Base class and super class are the same thing for me
Anyway, finalize and clone methods are protected in Object class. finalize is protected so that you don't explicitly call finalize on instances of a class. finalize method is supposed to be called by garbage collector not us. clone is protected because objects of a class can be cloned if the class implements cloneable interface. So by making the method protected, you can't call the method on every class that you want (because calling clone method on object of a class that doesn't implement Cloneable interface generates a CloneNotSupportedException)...