Activity 3.9.1.
Add a toString() method to the Student class below that prints out the name, email, and id instance variables. Run to test.
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, let’s look briefly at how we can use an inherited method and also at how we can override it–that is, redefine the method–if it doesn’t exactly suit our purposes.Object
class is the toString()
method:public class Object
{
public String toString() ;
}
toString()
method returns a String
representation of its object. For example, o1.toString()
will return a String
that in some sense describes o1
.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());
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
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
.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.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()
oneRowNim
instance very briefly in the string returned by the toString()
method:public String toString()
{
return "nSticks = " + nSticks + ", player = " + player;
}
toString()
method to the OneRowNim
class and then run the program shown in Figure 3.9.1, we get the following output:nSticks = 9, player = 2
nSticks = 13, player = 1
System.out.println
looks for a String to print out, it will automatically look for a toString() method of an object and invoke it. It is possible to leave out the method call to toString() inside System.out.println
methods.// Equivalent code
System.out.println(g1.toString());
System.out.println(g1);
OneRowNim
class, it does provide a very brief, understandable description of the state of the object. This is the reason that the toString()
method was included in the Object
class.