Ok -- so I adjusted your code a bit (see my comments)
The WaterSource.toString() method is used to override Object.toString() method that every class inherits. This method is invoked whenever you try to print an objedct. So on the line I marked with **** the WaterSource.toString() method is invoked so that the contents of WaterSource is displayed however you choose. When I run this code as you see it, I get the following output: WaterSource() value1 = some Value source = pipes Try commenting out the WaterSource.toString() method, so that the default toString() is used, and you get this (the exact value you get for source will vary from execution to execution: WaterSource() value1 = some Value source = WaterSource@1a16869 Does that help? [ November 01, 2003: Message edited by: Jessica Sant ]