Ben je ne sais pas si c'est possible ce que je demande, j'ai bien chercher sur google et ya pas de resultat ou les mots clé n'était pas bons.
Bref, je me lance, J'ai une classe B qui herite d'une classe A
class A
public function fct1() as integer
public function fct2() as integer
public function fct3() as integer
end class
-------------------
class B
inherits A
end class
Donc j'utilise la classe A dans mon programme (c'est l'existant), ce que je veux c'est de masquer la fct2 des instances de la classe B ou la rendre privé.
ex:
class B
inherits A
masquer function fct2() as integer
end class
je suis preneur de toute proposition
merci bcp pour la lecture ;)
Par exemple, si tu veux créer une classe sans constructeur qui sera instanciable que par l'appel d'une de tes procédure, tu peux créer une classe de base MustInherits ou une interface (dépend du contexte, encore une fois). Dans ta fonction, tu utilise une classe dérivé (ou implémentant l'interface) pour créer l'instance:
Public Interface Machin ' Visible depuis l'extérieur
Public Property Propriété
Public Function Fonction
End Interface
Private Class MonMachin ' Seulement en interne
Implements Machin
Public Property Propriété
Public Function Fonction
Public Function AutreFonction ' Fonction seulement disponible en interne
End Class
Et ta fonction qui instancie Machin:
Public Function GetMachin As Machin
Return New MonMachin
End Function
Tu peux aussi partager tes données entre les niveaux d'héritages avec des variables Protected.
Mais des variables Protected pourront être accessibles depuis l'extérieur si on hérite de cette classe, il faut déclarer la classe NotHeritable pour éviter cela.
Il faut dire plus exactement ce que tu veux pour avoir une réponse plus précise ;)
A+
Mais si je reprend ce que tu as dis, c'est effectivement comme ça qu'il faut faire:
Public class base ' Classe visible pour tout le monde
Protected MaValeur
Public Property Valeur
Return MaValeur
End Property
end class
Private class A ' Classe privé qui ajoute la fonction 2
inherits base
Public Sub SetValeur(Valeur)
MaValeur=Valeur
End Sub
end class
Ici par exemple, une fonction de la classe privé va initialiser une variable qui sera reprise par la propriété de la classe publique. Mais pour passer des données de ta classe A à ta classe de base, il faut utiliser des variables Protected (déclaré dans ta classe de base), mais celle-ci seront accessible par tout autre classe dérivant de ta classe de base.
Sinon, la 3ème variante, c'est de déclarer tes fonctions et propriété de la classe de base Overridable puis de faire des Overrides dans ta classe dérivé privé. Ceci permet en qq sort de modifier le fonctionnement de tes functions de la classe de base lorsque tu instancie ta classe a partir de la classe privé. (j'espère avoir été assez clair )