Hallo, ich habe folgende Frage: ich möchte von der Klasse SerialPort eine eigene Klasse myRS232 erben. Nun werden ja Konstrujktoren nicht mitvererbt. Ich möchte gern, dass die Konstruktoren meine Klasse genau die gleiche Funktionalität haben wie die von SerialPorts. Wie bewerksteliige ich das am einfachsten? Kurz, gibt es eine Möglickeit, die Konstruktoren von SerialPort "mitzuerben"? Grüß, Alex
Wie wäre es denn, wenn du in der erbenden Klasse einen Konstruktor mit den gleichen Argumenten schreibst und darin den der "Eltern"-Klasse über base aufrufst? Chris Nachtrag: Hier ist noch ein Beispiel, wie man es auch machen kann aus der MSDN:
1 | using System; |
2 | public class BaseClass |
3 | { |
4 | int num; |
5 | |
6 | public BaseClass() |
7 | { |
8 | Console.WriteLine("in BaseClass()"); |
9 | } |
10 | |
11 | public BaseClass(int i) |
12 | { |
13 | num = i; |
14 | Console.WriteLine("in BaseClass(int i)"); |
15 | } |
16 | |
17 | public int GetNum() |
18 | { |
19 | return num; |
20 | } |
21 | } |
22 | |
23 | public class DerivedClass : BaseClass |
24 | { |
25 | // This constructor will call BaseClass.BaseClass() |
26 | public DerivedClass() : base() |
27 | { |
28 | } |
29 | |
30 | // This constructor will call BaseClass.BaseClass(int i) |
31 | public DerivedClass(int i) : base(i) |
32 | { |
33 | } |
34 | |
35 | static void Main() |
36 | { |
37 | DerivedClass md = new DerivedClass(); |
38 | DerivedClass md1 = new DerivedClass(1); |
39 | } |
40 | } |
Hallo Chris, ich kann mir zwar vorstellen, was Du meinst. Weiß allerdings nicht, wie das syntaktisch aussehen soll. So in etwa: public myRS232(string portName, int baudRate) : base(SerialPort(string portName, int baudRate)){} ??? Gruß
Fast ;) Ich hab oben zwei verschiedene Möglichkeiten beschrieben... die erste wäre in der myRS232 den Constructor so zu schreiben
1 | public myRS232(string portName, int baudRate) |
2 | { |
3 | base(portName, baudRate); |
4 | //weiterer Code |
5 | } |
Die zweite Möglichkeit (eleganter) wäre:
1 | // This constructor will call BaseClass.BaseClass(int i) |
2 | public myRS232(string portName, int baudRate) : base(portName, baudRate) |
3 | { |
4 | //weiterer Code |
5 | } |
Lg, Chris
Da warst Du wohl etwas schneller. Hast mir sehr geholfen. Danke und schönes Wochenende. Alex
planloser Gast schrieb: > Hallo Chris, > > ich kann mir zwar vorstellen, was Du meinst. Weiß allerdings nicht, wie > das syntaktisch aussehen soll. > > So in etwa: > > public myRS232(string portName, int baudRate) : base(SerialPort(string > portName, int baudRate)){} > > ??? > > Gruß Siehe Post im anderen Thread: Beitrag "Re: Suche C# Profi!"
Hallo, eine Frage hätte ich noch: kann ich den übernommenen Konstruktor auch erweitern, z.B um zugefügte Eigenschaften der Klasse zu initialisieren usw.? Danke und Gruß, Alex
planloser Gast schrieb: > Hallo, > > eine Frage hätte ich noch: > > kann ich den übernommenen Konstruktor auch erweitern, z.B um zugefügte > Eigenschaften der Klasse zu initialisieren usw.? Ich denke an dieser Stelle ist es Zeit den Hinweis zu bringen: Du brauchst Literatur! Das alles sind Grundlagen und in jedem noch so grindigen Buch beschrieben. Der Konstruktor der abgeleiteten Klasse ruft den Konstruktor der Basisklasse (damit ist der geerbte Teil erledigt) und in seinem eigenen Codeteil initialisiert er seine eigenen Member.
1 | public myRS232(string portName, int baudRate) : base(portName, baudRate) |
2 | {
|
3 | //weiterer Code
|
4 | |
5 | // hier wird alles initialisiert, was eine myRS232 mehr kann
|
6 | // als die base-Klasse von der sie abgeleitet ist.
|
7 | }
|
Ich hab 'n Buch, das ist auch schrecklich dick, aber vielleicht ist das ja das Problem. Ich hab's jedenfalls gerade nach längerem Suchen gefunden. Allerdings unter einem anderen Kontext. Danke für Deine Hilfe. Gruß, Alex
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.