Bei Vererbung einschränken?

Hallöchen Community,

gegeben sei eine Klasse, die (grundlegend) wie folgt definiert ist:

Public Class ParentClass
 Inherits System.Windows.Forms.Control
 ' ...
End Class

Mir ist klar, daß ich in MyBaseClass nun jede Menge hinzufügen kann oder überschreiben kann, was dann in der ChildClass …

Public Class ChildClass
 Inherits ParentClass
 ' ...
End Class

… Verwendung findet.

ABER: Kann man in der ParentClass auch Dinge für die ChildClass „unerreichbar machen“, die von System.Windows.Forms.Control geerbt wurden? Beispielsweise vererbt System.Windows.Forms.Control die Eigenschaft „Text“ und das Event „Click“ - könnte man in der ParentClass dafür sorgen, daß „Text“ und „Click“ in der ChildClass nicht mehr verfügbar sind? Ich nehme an: ja :smile: und wenn ich das richtige Schlagwort dafür wüsste, könnte ich es auch googlen … aber Freund Google hilft halt nur, wenn man weiß, wie das heisst, was man sucht :wink:

Danke schonmal!

ooops … Fehler:

in „Mir ist klar, daß ich in MyBaseClass nun“
–> ParentClass war gemeint!

Nein, das geht nicht. Jedes Objekt deiner Kindklasse kann auch als eine Instanz der Control-Klasse aufgefasst werden. Daher muss die Kindklasse jedes öffentliche (und geschützte) Mitglied der Control-Klasse haben.
Du könntest höchstens das Property überschreiben und im Getter und Setter Ausnahmen werfen, aber das fände ich sehr unintuitiv.
Wofür soll das denn überhaupt gut sein?

Hallo,

so z.B.:

 Public NotOverridable Overrides Property Text() As String

Allerdings könnte das in der Child-Klasse wiederum mit

Public Shadows Property Text As String

ausgehebelt werden.

Gruß
Thomas