Du missverstehst da die Vererbung:
NotesSession -> NotesDatabase -> NotesDocumentCollection.
Hilfreich ist es zudem immer, wenn man die Theorie (oder wie man sie bisher verstanden hat) einfach selber ausprobiert.
Markus hat da schon Recht. Die einzigen Klassen zwischen denen in Lotus Notes eine Vererbungshierarchie besteht sind:
NotesRichTextItem extends NotesItem.
Der Rest der Verknüpfungen ist über Delegation gelöst.
Das gilt oft als sowieso besser oder: Wenn Anfänger Vererbung verstehen, neigen sie dazu, dies für Dinge anzuwenden, für die Delegation besser ist. Dies hab ich in der realen Welt bei übernommenen Projekten oft festgestellt.
Die Begriffe sind so klar definiert, dass eine Diskussion echt zwecklos ist.
Wenn du in die Notes Hilfe zu NotesItem schaust, dann steht da:
NotesItem
Derived Classes
NotesRichTextItem inherits from NotesItem class.
und bei NotesRichTextItem:
Base class
Inherits from: NotesItem
Das wirst du nirgendwo anders in der Doku finden und das hat auch einen Grund.
Wie Markus richtig angesprochen hat, sind an die Objekte des Typs NotesRichTextItem direkt die Methoden von NotesItem gebunden.
An instance of the type NotesRichTextItem
is a NotesItem.
Zwischen NotesSession, NotesDatabase und NotesDocumentCollection bestehen Delegations-Beziehungen.
An instance of the type NotesDatabase
has a NotesCollection.
Delegation ist aus Sicht von Kappselung eigentlich oft die bessere Beziehung. Klassen werden nämlich so kohäsiver hinsichtlich ihrer Rolle. Somit konziser, fokussierter, zielgerichteter.
Würde NotesDocumentCollection von NotesDatabase erben, dann wäre an ein Objekt des Typs NotesDocumentCollection z.B. die Methode Replicate() direkt gebunden. Das macht aber wenig Sinn. Falsch angewandte Vererbungshierarchien führen dazu, dass die APIs zu einer Klasse unnötig aufgebläht werden. Und das kann echt nervig werden und ich erlebs nicht selten in der Praxis in selbstgedrehten Objektmodellen in Java Projekten unseres Landes.
Gruß Axel