Section 3.8. From the Java Library: java.lang.Object


[Page 133 (continued)]

3.8. From the Java Library: java.lang.Object

The most general class in Java's class hierarchy is the java.lang.Object class. This is the superclass of all the classes that occur in Java programs. By default, it is the direct superclass of any class that does not explicitly specify a pedigree in its class definition.

java.sun.com/docs


All subclasses of Object inherit the public and protected methods contained in Object, so all such methods can be thought of as belonging to the subclasses. This means that all classes inherit the methods of the Object class, because every class is a subclass of it. In this section, we will look briefly at how we can use an inherited method and also at how we can override itthat is, redefine the methodif it doesn't exactly suit our purposes.

One of the most useful methods in the Object class is the toString() method:

public class Object {     public String toString() ; } 



[Page 134]

The toString() method returns a String representation of its object. For example, o1.toString() will return a String that in some sense describes o1.

Because OneRowNim is a subclass of Object, it inherits the toString() method. To illustrate the default behavior of toString(), let's use it with a OneRowNim instance:

OneRowNim g1 = new OneRowNim(11); OneRowNim g2 = new OneRowNim(13); System.out.println(g1.toString()); System.out.println(g2.toString()); 


This code segment creates two OneRowNim instances, one named g1 and the other named g2. The inherited toString() method is then invoked on each OneRowNim instance, which produces the following output:

OneRowNim@1dc6077b OneRowNim@1dc60776 


What this experiment shows is that the default definition of toString() returns some kind of internal representation of its object. It looks as if it returns the name of the object's class concatenated with its memory address. This may be useful for some applications. But for most objects we will want to override the default definition to make the toString() method return a string that is more appropriate for OneRowNim.

What String should the g1.toString() method return? Let's have it return a String that reports the OneRowNim instances's current state, which are the values stored in the two instance variables. To override a method, you simply define a method with the same signature in the subclass. If you call toString() with an instance of the subclass, its version of the method will be used. In this way, the subclass method overrides the superclass version. Thus, OneRowNim.toString() will have the following signature:

public String toString(); 


Let us describe the state of a oneRowNim instance very briefly in the string returned by the toString() method:

public String toString() { return "nSticks = " + nSticks + ", player = " + player; } 


If we add the toString() method to the OneRowNim class and then run the program shown in Figure 3.18, we get the following output:

nSticks = 9, player = 2 nSticks = 13, player = 1 



[Page 135]

Figure 3.18. An application to test the overridden toString() method.

public class TestToString {   public static void main(String argv[])   { OneRowNim g1 = new OneRowNim(11);     OneRowNim g2 = new OneRowNim(13);     g1.takeSticks(2);     System.out.println(g1.toString());     System.out.println(g2.toString());   } // main() } // TestToString class 

While this new method may not play an important role in the OneRowNim class, it does provide a very brief, understandable description of the state of the object. That is why the toString() method was included in the Object class.




Java, Java, Java(c) Object-Orienting Problem Solving
Java, Java, Java, Object-Oriented Problem Solving (3rd Edition)
ISBN: 0131474340
EAN: 2147483647
Year: 2005
Pages: 275

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net