Il metodo costruttore New della classe in Visual Basic
Nel linguaggio Visual Basic il metodo costruttore New definisce i valori dei campi di un oggetto quando viene istanziato per la prima volta in una classe.
Un esempio pratico
Creo una classe con una variabile privata (_nomevar) nascosta dall'esterno.
- Public Class nomeclasse
- Private _nomevar As String
- Public Sub New()
- _nomevar="prova"
- End Sub
- Public Property Nome As String
- Get
- Return _nomevar
- End Get
- Set (ByVal valore As String)
- _nomevar=valore
- End Set
- End Property
- End Class
Il metodo New viene invocato automaticamente quando si istanzia un oggetto nella classe.
Dim nomeoggetto As New nomeclasse()
Al momento dell'istanza l'oggetto eredita automaticamente tutti i metodi, i campi (_nomevar) e le proprietà (new, get, set) della classe.
Inoltre, il metodo costruttore New assegna il valore "prova" all a variabile locale _nomevar dell'oggetto.
Quando interrogo l'oggetto viene invocata la proprietà get della classe, un altro metodo che legge il valore della variabile interna _nomevar e la invia all'esterno.
console.writeln(nomeoggetto.Nome)
Il metodo get restituisce l'output
prova
Invocando la proprietà set, invece, posso modificare il valore assegnato alla variabile locale _nomevar
nomeoggetto.Nome="prova2"
Esempio 2 (il passaggio dei parametri)
Il metodo costruttore può essere configurato per accettare il passaggio dei parametri al momento dell'istanza.
I parametri in ingresso devo esplicitamente indicarli tra le parentesi tonde del metodo costruttore.
- Public Class nomeclasse
- Private _nomevar As String
- Public Sub New(ByVal valore As String)
- _nomevar=valore
- End Sub
- Public Property Nome As String
- Get
- Return _nomevar
- End Get
- Set (ByVal valore As String)
- _nomevar=valore
- End Set
- End Property
- End Class
Quando istanzio l'oggetto devo indicare i valori da assegnare ai parametri tra le parentesi tonde della chiamata.
Dim nomeoggetto As New nomeclasse("prova2")
In questo esempio, il metodo costruttore New legge il valore "prova2" che invio tramite l'istanza e lo assegna alla variabile interna _nomevar della classe.
Esempio 3 (overloading)
Grazie all'overloading posso creare più metodi costruttori New in una classe con diversi parametri in ingresso.
A seconda della chiamata viene invocato uno costruttore oppure un altro.
- Public Class nomeclasse
- Private _nomevar As String
- Public Sub New()
- _nomevar="prova"
- End Sub
- Public Sub New(ByVal valore As String)
- _nomevar=valore
- End Sub
- Public Property Nome As String
- Get
- Return _nomevar
- End Get
- Set (ByVal valore As String)
- _nomevar=valore
- End Set
- End Property
- End Class
In quest'ultimo codice ci sono due metodi costruttori, uno senza parametri New() e l'altro con un parametro in ingresso New(ByVal valore As String).
Se istanzio un oggetto senza passare un parametro, viene invocato il primo metodo costruttore (rosso)
Dim nomeoggetto As New nomeclasse()
Viceversa, se istanzio un oggetto passando un parametro, viene invocato il secondo metodo costruttore (blu).
Dim nomeoggetto As New nomeclasse("nuovovalore")
A seconda dell'istanza, viene chiamato un metodo costruttore o un altro.
E così via.