Wie man Basis-Klasse-Instanz von einer Abgeleiteten Klasse
Ich weiß nicht, ob das möglich ist, aber ich werde versuchen, die Basis-Klassen-Instanz von einer Abgeleiteten Klasse. In C# kann ich mit der Basis Schlüsselwort Zugriff auf Eigenschaften und Methoden der Basisklasse (natürlich), aber ich will Basis selbst. Der Versuch zu tun, so die Ergebnisse in einem "Verwenden von keyword 'base' is not valid in this context" Fehler.
Beispiel-Code
public class SuperParent
{
public int SPID;
public SuperParent()
{
}
}
public class SubChild : SuperParent
{
public SubChild(int pSPID)
{
base.SPID = pSPID;
}
public int BaseSPID
{
get
{
SuperParent sp = base;
return sp.SPID;
}
}
}
- Ein code-snippet im Wert von 1000 Worte. Bitte geben Sie ein snippet von dem, was Sie erreichen wollen
- Können Sie uns zeigen, Ihren code, ich kann nicht ganz verstehen, was Sie versuchen zu tun, danke.
- OP darüber weiß, aber es ist nicht klar, was er will... Vielleicht etwas entlang der Linien, wie "return base;"
- Wenn Sie mit einer Instanz der abgeleiteten Klasse, es gibt keine
base instance
. - Ich denke du meinst so etwas wie dieses
return base;
gab das problem? - Aktualisiert Mit Beispiel-Code
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit einer Instanz der abgeleiteten Klasse, es gibt keine
base instance
.Ein Beispiel:
Was nicht möglich ist, innerhalb
B
:Können Sie etwas wie das hier tun:
Und Sie können hinzufügen, eine andere Methode wie
Dann können Sie
So, in diesem
GetBase()
Methode ist wahrscheinlich das, was Sie wollen.Die Pointe ist: Wenn Sie eine Instanz von
B
es erbt alle Eigenschaften und die nicht-überschreiben-das Verhalten vonA
, aber es besteht nicht aus einer Instanz vonB
hält, eine (verborgene, aber Automatik) Verweis auf eine Instanz vonA
. Sie können werfen Sie IhreB
Instanz zuA
, aber es bleibt eine Instanz vonB
.Sowie Sie nicht, stellen Sie code für Ihre Frage, aber ich supsect Sie wollen so etwas wie
Aber im Hinterkopf behalten, dass
MyBase
ist wirklich der TypDerived
das problem nicht erklärt worden ist, so klar wie es könnte. allerdings, in der Regel, Sie kann besser sein, auf eine abstrakte Basis-Klasse und Methoden und überschreiben die benötigten Methoden. Sie können dann mit der Basis.Methode wie Sie in diesem Fall (sonst musst du nur gesponnen, bis eine Instanz der abgeleiteten Klasse).
}
Die abgeleitete Instanz der Basis-Instanz. Es ist nur eine Objekt-Instanz im Speicher.
Beispiel:
thing
ist eine Instanz einerA
, und ist auch eine Instanz einerB
.Sie könnten zum Beispiel schreiben dieser Zeile:
B thing2 = thing;
Punkt 1: wenn Sie möchten, erstellen Sie die Basis-Instanz der Klasse innerhalb der Kind-Klasse, als es nicht Wert. Sie haben bereits die öffentlichen Dinge zugänglich im Kind.
Punkt 2: Wenn Sie initialisiert Kind Klasse, und jetzt wollen Sie erhalten Basis-Klasse "Instanz" wie kann man dann bekommen, wenn es nicht initialisiert ist(Weil jetzt die base-class-Instanz nicht vorhanden ist, in den physischen Speicher, und es gibt nur untergeordnete Instanz der Klasse gibt)?
Ich interpretiert, was Sie waren gefragt, ein bisschen anders als die anderen Antworten hier, so dass ich dachte, ich würde meine $0,02.
Das Ergebnis ist ein neues Objekt aufgefüllt mit den Eigenschaften der Basisklasse die untergeordnete Klasse.