Domino 9 und frühere Versionen > ND6: Entwicklung
Syntax für Sub New bei abgeleiteter Klasse?
PeterD2:
Sorry, ich kann in der Hilfe nirgends ein Beispiel finden wie ich mir ein Objekt von einer abgeleiteten Klasse erzeuge, wenn die Paramter der abgeleiteten Klasse von denen der Basisklasse abweichen.
Beispiel:
class basisklasse
public sub new(doc as NotesDocument, i as integer)
....
end sub
end class
'erweiterte Klasse benötigt einen Parameter mehr im Konstruktor
class erweiterteKlasse as basisklasse
public sub new (strTest as String), basisklasse(doc, i) '//richtig so?
...
end sub
end class
......
irgendwo im Code:
Dim objekt as erweiterteKlasse
Set objekt=????
Genau! Wie geht das jetzt weiter? Wie muss ich objekt initialisieren um sowohl die Variable "strTest" im Konstruktor der abgeleiteten Klasse zu setzen, als auch doc und i der basisklasse und dabei deren Konstruktor auszuführen?
Ach ja: Die Hilfe sagt zu Sub New():
Sub New [ ( [ argList ] ) ] [ , baseClass ( [ baseArgList ] ) ]
Danke im Voraus
Peter
ZaLudtske:
Hallo,
soweit ich mich erinnere ist es leider nicht möglich abgeleitete Klassen mit untschiedlichen Paramamtern als die Basisklasse zu erstellen. Ich denke man kann die Parameter erweitern, aber nicht einschränken.
Rainer
PeterD2:
Es geht ja auch um das Erweitern. In meinem Beispiel sollen beide Klassen die Parameter "doc" und "i" benötigen, aber nur die abgeleitete Klasse zusätzlich "strTest"
Axel:
--- Zitat von: PeterD2 am 16.11.07 - 14:58:53 --- public sub new (strTest as String), basisklasse(doc, i) '//richtig so?
--- Ende Zitat ---
Nein!
Muss so aussehen: public sub new(strTest as String, doc as NotesDocument, i as integer)
So geht's weiter:
Dim objekt as erweiterteKlasse
Set objekt=New erweiterteKlasse(StrTest, doc, i)
Wenn du denn Kontruktor in der erweiterten Klasse überschreibst, wird der von der Basisklasse nicht mehr ausgeführt.
Axel
PeterD2:
Das funktioniert bei mir nicht. Wenn ich das so eingebe gibt´s einen Compilerfehler:
LibMeineLib: Declarations: 1163: SUB NEW arguments do not match parent´s SUB NEW arguments
Selbstverständlich gebe ich dabei den neuen Parameter als ersten in der Parameterliste der abgeleiteten Klasse an.
Was ich auch nicht verstehe: Wie kann ich denn den Konstruktor der Basisklasse NICHT überschreiben? Wenn ich in der abgeleiteten Klasse keine Sub New() definiere kann ich keine Objekte davon erzeugen ("SUB NEW is required for erweiterteKlasse"), und wenn ich eine Sub New() definiere überschreibe ich die der Basisklasse.???
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln