Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Heritage de constructeur

2 réponses
Avatar
Sylo
Bonjour,

J'ai programmé une classe qui doit être mustinherit et qui dispose d'une
dizaine de constructeur

Quand j'hérite de cette objet dans une nouvelle classe, je n'hérite pas des
constructeurs et je dois les recoder à l'identique dans la classe qui
hérite. Est ce normal ? Y a t-il quelque chose concernant l'héritage que je
n'ai pas saisie.

MErci
Sylo

2 réponses

Avatar
Millox Frédéric
Salut Sylo,

Tu ne dois pas recoder à l'identique mais obligatoirement utilisé un des
constructeurs que tu as défini dans ta classe abstraite.

ex : (pas très glorieux, j'en conviens)

Public MustInherit Class Animal
Private _Attribut As String

Public Sub New(ByVal NomAnimal As String)
_Attribut = NomAnimal
End Sub

End Class

Public Class Leopard
Inherits Animal

Public Sub New()
MyBase.New("Leopard") ' Obligé d'utiliser un des New énoncé dans ta
classe abstraite (ici il y a q'un seul).
End Sub

A+.

End Class



--
fmillox


"Sylo" a écrit :

Bonjour,

J'ai programmé une classe qui doit être mustinherit et qui dispose d'une
dizaine de constructeur

Quand j'hérite de cette objet dans une nouvelle classe, je n'hérite pas des
constructeurs et je dois les recoder à l'identique dans la classe qui
hérite. Est ce normal ? Y a t-il quelque chose concernant l'héritage que je
n'ai pas saisie.

MErci
Sylo





Avatar
Kelpan
Bonjour,

On ne peut pas hériter d'un constructeur.

Il te faut obligatoirement un constructeur pour instancier les variables de
ta classe.
(Si tu ne mets pas de constructeur, il en sera créer un par défaut
implicitement pour pouvoir appeler MyBase.New et instancier les variables de
ta classe.)
Et c'est ce même constructeur qui va appeler le constructeur de ta classe de
base.

Par contre, inutile de recoder à l'identique de ta classe de base, il suffit
d'appeler MyBase.New(avec le ou les paramètres) pour chaque NEW.

J'ai eu le même problème, en voulant créer un composant héritant de Menuitem
qui comporte plusieurs constructeurs.