Von System.Exception ableiten
-
Man kann von dieser Klasse ableiten aber wie kann man dass das Attribut dass durch die Eigenschaft Message gekapselt ist ändern( hat nur einen getter). Geht das überhaupt????
-
z.B. so:
public class MyException : Exception { public MyException() : base("Fehlermeldung in der Basisklasse setzen") { } }
-
Ok danke. Aber prinzipiell habe ich keine Chance in einer abgeleiteten Klasse auf ein Attribut der Basisklasse zuzugreifen wenn dieses private ist(wie es aussieht) und beim Propertie keinen setter besitzt also readonly ist?
Sehe ich das so richtig?
Noch ne andere Frage: der Sytax
Konstruktor()
: ...
{
}erinnert mich sehr an c++ kann man so auch variablen initialisieren wie in c++?
Mfg Karldin
-
Klar, in abgeleiteten Klassen hast du nur auf public und protected der Basisklasse Zugriff.
MfG SideWinder
-
Karldin schrieb:
Ok danke. Aber prinzipiell habe ich keine Chance in einer abgeleiteten Klasse auf ein Attribut der Basisklasse zuzugreifen wenn dieses private ist
Das ist ja gerade der Sinn von private.
Karldin schrieb:
und beim Propertie keinen setter besitzt also readonly ist?
Kein setter property und readonly sind zwei unterschiedliche dinge die erstmal nichts miteinander zu tuen haben. die Einschränkung readonly sagt aus, daß die Variable nur während der Konstruktionsphase der Klasse gesetzt werden kann und danach nicht mehr veränderbar ist. das man sich dann auch den setter sparen kann ist zwar logisch, aber umgekehrt bedeutet ein nicht vorhandener setter nicht zwingend, daß das Variable auch readonly sein muß.
es kann z.B. auch sein das der setter selbst private ist, der getter dagegen public. dann "siehst" du den setter auch nicht in der abgeleiteten klasse.
Btw, prinzipiell hast du scon eine chance über Tricks trotzdem auf private Variablen zuzugreifen, jedoch ist das in den seltesten Fällen eine gute Idee, denn private hat idr seinen Sinn und es zu umgehen fordert Probleme nur heraus.
-
Das mit readonly is ma klar nur habe nicht dass richtige wort gefunden. Schreibgeschützt wollte ich eigentlich sagen...
Und zur 2. Frage(die noch beantworten bitte dann nerv ich euch nicht weiter :-))
der Sytax
Konstruktor()
: ...
{
}erinnert mich sehr an c++ kann man so auch variablen initialisieren wie in c++?
Beispiel in C++
class CTest { private: int var; public: CTest(int i) :var(i)//<------ {} };
-