Thread overview
Calling Parent Methods
Aug 13, 2003
Benji Smith
Aug 13, 2003
Mike Wynn
Aug 13, 2003
Benji Smith
August 13, 2003
Is there a way to call methods in a parent class? Even if the child class overloads the method definition?

Take a look at this code:

class baseClass {
	public void doSomething(int x) {
		return x+1;
	}
}


class derivedClass: baseClass {
	public void doSomething(int x) {
		x *=2;
		return baseClass.doSomething(x);
	}
}

I haven't seen anything in the D spec that hints at this kind of functionality. Is this currently possible, and I'm just not aware of it? If it's not possible, is there any good reason why we couldn't add this to the spec?
August 13, 2003
yes super.method( .... ); as in ...
------------------
import c.stdio;

class A {
 this() { printf("A::this()\n"); }
 void show() { printf("A::show()\n"); }
}

class B : A {
 this() { printf("B::this()\n"); }
 void show() { super.show(); printf("B::show()\n"); }
}

int main( char[][] args ) {
 B b = new B();
 b.show();
 return 0;
}


// output (as you would expect)
//A::this()
//B::this()
//A::show()
//B::show()


"Benji Smith" <dlanguage@xxagg.com> wrote in message news:qrikjvk30j82a8l5vfrhg8840v1sg4elsh@4ax.com...
> Is there a way to call methods in a parent class? Even if the child class overloads the method definition?
>
> Take a look at this code:
>
> class baseClass {
> public void doSomething(int x) {
> return x+1;
> }
> }
>
>
> class derivedClass: baseClass {
> public void doSomething(int x) {
> x *=2;
> return baseClass.doSomething(x);
> }
> }
>
> I haven't seen anything in the D spec that hints at this kind of functionality. Is this currently possible, and I'm just not aware of it? If it's not possible, is there any good reason why we couldn't add this to the spec?


August 13, 2003
Aha. Fantastic. This really ought to be documented on the "functions.html" page or the "classes.html" page (which mentions using "super" to call parent-class constructors, but not other methods) on the digital mars website.

--Benji

On Wed, 13 Aug 2003 16:05:00 +0100, "Mike Wynn" <mike.wynn@l8night.co.uk> wrote:

>yes super.method( .... ); as in ...