|
|
Objects, Classes, and Interfaces |
TheObjectclass sits at the top of the class hierarchy tree in the Java development environment. Every class in the Java system is a descendent (direct or indirect) of the
Objectclass. TheObjectclass defines the basic state and behavior that all objects must have, such as the ability to compare oneself to another object, to convert to a string, to wait on a condition variable, to notify other objects that a condition variable has changed, and to return the object's class.The
equalsMethodUse theequalsto compare two objects for equality. This method returnstrueif the objects are equal, false otherwise. Note that equality does not mean that the objects are the same object. Consider this code that tests twoIntegers,oneandanotherOne, for equality:This code will displayInteger one = new Integer(1), anotherOne = new Integer(1); if (one.equals(anotherOne)) System.out.println("objects are equal");objects are equaleven thoughoneandanotherOnereference two different, distinct objects. They are considered equal because they contain the same integer value.Your classes should override this method to provide an appropriate equality test. Your
equalsmethod should compare the contents of the objects to see if they are functionally equal and returntrueif they are.The
getClassMethodThegetClassmethod is a final method (cannot be overridden) that returns a runtime representation of the class of this object. This method returns aClassobject. You can query theClassobject for a variety of information about the class, such as its name, its superclass, and the names of the interfaces that it implements. The following method gets and displays the class name of an object:One handy use of thevoid PrintClassName(Object obj) { System.out.println("The Object's class is " + obj.getClass().getName()); }getClassmethod is to create a new instance of a class without knowing what the class is at compile time. This sample method creates a new instance of the same class asobjwhich can be any class that inherits fromObject(which means that it could be any class):Object createNewInstanceOf(Object obj) { return obj.getClass().newInstance(); }The
toStringMethodObject'stoStringmethod returns aStringrepresentation of the object. You can usetoStringto display an object. For example, you could display aStringrepresentation of the currentThreadlike this:TheSystem.out.println(Thread.currentThread().toString());Stringrepresentation for an object is entirely dependent on the object. TheStringrepresentation of anIntegerobject is the integer value displayed as text. TheStringrepresentation of aThreadobject contains various attributes about the thread, such as its name and priority. For example, the previous of code above display the following:TheThread[main,5,main]toStringmethod is very useful for debugging and it would behoove you to override this method in all your classes.Object Methods Covered In Other Lessons or Sections
TheObjectclass provides a method,finalizethat cleans up an object before its garbage collected. This method's role during garbage collection is discussed in this lesson in Cleaning Up Unused Objects. Also, Writing afinalizeMethod shows you how to write override thefinalizemethod to handle the finalization needs for you classes.The
Objectclass also provides five methods that are critical when writing multithreaded Java programs:These methods help you ensure that your threads are synchronized and are covered in Threads of Control
notifynotifyAllwait(three versions). Take particular note of the page titled Synchronizing Threads.
|
|
Objects, Classes, and Interfaces |