je crée un objet qui hérite d'une classe disposant d'un certain nombre de
propriété. Dans ma classe qui hérite, je voudrais rendre innaccessible ces
propriétés. Est-ce possible et comment ?
Merci
Sylo
En faisant cela, tu briserais les règles étiques et logiques de l'héritage... Une classe héritant d'une autre devrait toujours exposer les même membres que sa classe parente. Lit ce message très explicite de Patrick à ce sujet. http://groups.google.com/group/microsoft.public.fr.dotnet.vb/msg/b893fa9d8a421962?as_umsgid=
Encapsule plutôt une instance de ta classe de base dans ton autre classe en exposant seulement les membres dont tu as besoin.
Exemple qui fait pas grand chose (non testé) : '** Public Class MaClasseDeBase
Private m_id As Int32 Private m_code As String
Public Sub New(ByVal id As Int32, ByVal code As String) m_id = id m_code = code End Sub
Public Property Id() As Int32 Get Return m_id End Get Set (Byval Value As Int32) m_id = Value End Set End Property
Public Property Code() As String Get Return m_code End Get Set (Byval Value As String) m_code = Value End Set End Property
End Class '** Public Class MaClasse
Private m_classeDeBase As MaClasseDeBase
Public Sub New(ByVal code As String)
m_classeDeBase = New MaClasseDeBase(1, code)
End Sub
Public Property Code() As String Get Return m_classeDeBase.Code End Get Set (Byval Value As String) m_classeDeBase.Code = Value End Set End Property
End Class '**
-- Cordialement Yanick MVP pour Visual Basic
Salut Sylo !
En faisant cela, tu briserais les règles étiques et logiques de
l'héritage... Une classe héritant d'une autre devrait toujours exposer les
même membres que sa classe parente. Lit ce message très explicite de Patrick
à ce sujet.
http://groups.google.com/group/microsoft.public.fr.dotnet.vb/msg/b893fa9d8a421962?as_umsgid=u28pohK9EHA.2876@TK2MSFTNGP12.phx.gbl
Encapsule plutôt une instance de ta classe de base dans ton autre classe en
exposant seulement les membres dont tu as besoin.
Exemple qui fait pas grand chose (non testé) :
'**
Public Class MaClasseDeBase
Private m_id As Int32
Private m_code As String
Public Sub New(ByVal id As Int32, ByVal code As String)
m_id = id
m_code = code
End Sub
Public Property Id() As Int32
Get
Return m_id
End Get
Set (Byval Value As Int32)
m_id = Value
End Set
End Property
Public Property Code() As String
Get
Return m_code
End Get
Set (Byval Value As String)
m_code = Value
End Set
End Property
End Class
'**
Public Class MaClasse
Private m_classeDeBase As MaClasseDeBase
Public Sub New(ByVal code As String)
m_classeDeBase = New MaClasseDeBase(1, code)
End Sub
Public Property Code() As String
Get
Return m_classeDeBase.Code
End Get
Set (Byval Value As String)
m_classeDeBase.Code = Value
End Set
End Property
En faisant cela, tu briserais les règles étiques et logiques de l'héritage... Une classe héritant d'une autre devrait toujours exposer les même membres que sa classe parente. Lit ce message très explicite de Patrick à ce sujet. http://groups.google.com/group/microsoft.public.fr.dotnet.vb/msg/b893fa9d8a421962?as_umsgid=
Encapsule plutôt une instance de ta classe de base dans ton autre classe en exposant seulement les membres dont tu as besoin.
Exemple qui fait pas grand chose (non testé) : '** Public Class MaClasseDeBase
Private m_id As Int32 Private m_code As String
Public Sub New(ByVal id As Int32, ByVal code As String) m_id = id m_code = code End Sub
Public Property Id() As Int32 Get Return m_id End Get Set (Byval Value As Int32) m_id = Value End Set End Property
Public Property Code() As String Get Return m_code End Get Set (Byval Value As String) m_code = Value End Set End Property
End Class '** Public Class MaClasse
Private m_classeDeBase As MaClasseDeBase
Public Sub New(ByVal code As String)
m_classeDeBase = New MaClasseDeBase(1, code)
End Sub
Public Property Code() As String Get Return m_classeDeBase.Code End Get Set (Byval Value As String) m_classeDeBase.Code = Value End Set End Property