Buona domenica amici,
vorrei un attimo il Vs supporto circa un ambito di visibilità che credevo aver capito, ma a quanto vedo no! :)
Nello specifico ho una classe MezziDiTrasporto contentente queste proprietà:
Public MustInherit Class MezzoDiTrasporto
Private _color As Color
Private _KmH As Long
Private _lunghezza As Integer
Private _larghezza As Integer
Private _altezza As Integer
Protected Property Colore As Color
Get
Return _color
End Get
Set(value As Color)
_color = value
End Set
End Property
Public Property KmH As Long
Get
Return _KmH
End Get
Set(value As Long)
_KmH = value
End Set
End Property
Public Property Lunghezza As Integer
Get
Return _lunghezza
End Get
Set(value As Integer)
_lunghezza = value
End Set
End Property
Public Property Larghezza As Integer
Get
Return _larghezza
End Get
Set(value As Integer)
_larghezza = value
End Set
End Property
Public Property Altezza As Integer
Get
Return _altezza
End Get
Set(value As Integer)
_altezza = value
End Set
End Property
Ed una classe Automobile. Questa è derivata dalla classe MezziDiTrasporto
Public Class Automobile
Inherits MezzoDiTrasporto
Private _alimentazione As Tipoalimentazione
Public Property Alimentazione As Tipoalimentazione
Get
Return _alimentazione
End Get
Set(value As Tipoalimentazione)
_alimentazione = value
End Set
End Property
...
Quello che vi chiedo è la funzionalità dell'ambito di visibilità di Protected (che io sapevo fosse utilizzato per indicare qualsiasi elemento di programmazione visibile SOLO dalla classe base e dalla classe derivata).
Ebbene se voi guardate la prima proprietà di MezziDITrasporto è dichiarata Protected (Property Colore).
Questa proprietà però una volta inzializzata una nuova automobile non la vedo!
Se infatti scrivo:
auto as new MezziDITrasporto.Automobile
la dicitura auto.Colore mi da errore. mentre se utilizzo Public piuttosto che Protected tutto, ovviamente, funziona.
Ma come è possibile? Automobile non è derivata da MEzziDiTrasporto? Per quale motivo non dovrebbe vederla? :)
Mi aiutate? Grazie