| 

.NET C# Java Javascript Exception

3
Ich habe eine abstrakte Klasse mit einer virtuellen Methode.

Nun soll das Kind diese Methode benutzen und überschreiben. Wie das geht weiß ich bereits. Meine Frage ist nun, kann ich diese Methode trotzdem noch benutzen auch wenn ich noch etwas zusätzlich machen will? z.B. eine Instanzvariable setzen.
News:
16.07.2009
sicco 179 1 4
1
Willst du nur einen Teil des Codes überschreiben oder willst du die Original-Methode einfach nur noch benutzen können?
Traumtänzer 19.07.2009
7 Antworten
3
Das Template Method Pattern könnte dich in diesem Zusammenhang interessieren:
- http://de.wikipedia.org/wiki/Schablonenmethode
30.10.2009
Peter Bucher 178 5
2
überschriebene methoden der basisklasse erreichst du aus der abgeleiteten klasse mit base.methode()

http://msdn.microsoft.com/de-de/library/hfw7t1ce%28VS.80%29.aspx
21.07.2009
maagz 313 1 1
1
Das ist schon mal gut. Angenommen, die Basisklassenimplementation lautet:

A();
B();
C();

Wie kann ich jetzt nur den Teil `B();` überschreiben? Ich will quasi erreichen, dass folgender Code ausgeführt wird:

A();
D(); //<- hier Änderung
C();
23.07.2009
sicco 179 1 4
1
In dem Fall, musst Du alles in der Überschreibung machen und den base call weglassen.
22.08.2009
jaytronic 29 1 1
1
Oder einfach die Methode B überschreiben (Code von D).
27.08.2009
gfoidl 9,4k 3 5
1
Man kann eine Methode nicht "teilweise" überschreiben. Entweder du überschreibst die Methode und rufst die Implementierung der Basisklasse irgendwo auf, oder Du rufst die Implementierung der Basisklasse nicht auf und musst dann die Funktionalität der Basisklasse ggf. selbst implentieren.

Zu sagen "mach das, was die Basisimplementierung tut, außer..." geht nicht.
07.09.2009
balu 216 1 3
0
DU kannst auch in der überschriebenen Methode die originale Methode aufrufen.
Ich glaube das ist es was DU wolltest. So geht es in Java, und wohl auch in C#

class Base
{
protected int Methode (Para para)
{
// tut etwaas
return ret;
}
}

class Derived extends Base
{
protected int Methode (Para para)
{
// tu was davor
int ret = super.Methode (para);
// tu was danach
return ret;
}
}
01.11.2009
stefan.bachert 395 4
Hast recht dass das auch in C# geht. Dort wird die Methode der Basisklasse mit dem 'base'-Schlüsselwort aufgerufen.
gfoidl 01.11.2009

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH