Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialNathan Quirk
3,679 PointsWhy @override the .toString method instead of creating a new one?
I understand what Craig is doing here with the @Override statement - overriding the normal behavior of the .toString method inherited from the parent class to mean something different. But - WHY? Why not create a new method by a new name and call it something else?
1 Answer
andren
28,558 PointsLet me turn the question around, why wouldn't he override the toString
method if he wants a method that converts the object to a string. When that is the precise purpose of the toString
method? Not overriding the method wouldn't offer any benefits and it would go against the expected behavior since a class' toString
method is supposed to be overridden. That is the recommended action to take with that method.
Beyond that it's also worth noting that since it is expected that most classes have overridden their toString
method and it is guaranteed to exist on all objects regardless it's very common for this method to be called automatically when some method tries to display an object as a string.
If you pass an object to a print statement for example it will automatically print the string form of the object even if you don't call the toString
method on your own. This is because it will pass the object into String.valueOf
which in turn more or less just calls the object's toString
method.