Computer Science Canada

Access the superClass' toString()?

Author:  Zren [ Thu Mar 05, 2009 1:36 am ]
Post subject:  Access the superClass' toString()?

Is there a way to access the toString of a superClass? Or when you make a toString() class in the subClass, do you completely overwrite it?

I know super.toString() doesn't work since it's like it makes a new instance without loading the constructor class.

Author:  wtd [ Thu Mar 05, 2009 1:55 am ]
Post subject:  RE:Access the superClass\' toString()?

code:
chris@spectrum:~$ cat Test.java
class Foo {
        public String toString() {
                return "Foo";
        }
}

class Bar extends Foo {
        public String toString() {
                return "Bar";
        }

        public String superString() {
                return super.toString();
        }
}

public class Test {
        public static void main(String[] args) {
                Bar a = new Bar();

                System.out.println(a.toString());
                System.out.println(a.superString());
        }
}
chris@spectrum:~$ javac Test.java
chris@spectrum:~$ java Test
Bar
Foo
chris@spectrum:~$

Author:  DemonWasp [ Thu Mar 05, 2009 1:56 am ]
Post subject:  RE:Access the superClass\' toString()?

super.toString() actually does what you want. See here: http://java.sun.com/docs/books/tutorial/java/IandI/super.html

You're thinking of super(), which calls the constructor of the parent class explicitly - something completely different.

Author:  Zren [ Thu Mar 05, 2009 10:20 am ]
Post subject:  Re: Access the superClass' toString()?

Weird, the first time I did this, all the values from the superClass were null, so I thought...ya. Turns out I had two other methods with the same name that I called from the constructor. So if a method has a same name in as one of it's subClass methods, is their any way to access it, or is it just dubbed lazy and bad programming?

Thanks WTD for the example.

Author:  DemonWasp [ Thu Mar 05, 2009 11:40 am ]
Post subject:  RE:Access the superClass\' toString()?

The Java language doesn't appear to specify any such method. Really, if you're relying on X method not to change its behaviour in a subclass, you should declare it as final so it can't be overridden.


: