Domino 9 und frühere Versionen > ND6: Entwicklung

Syntax für Sub New bei abgeleiteter Klasse?

(1/3) > >>

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