Condividi tramite


Informazioni dettagliate: override dei membri

Aggiornamento: novembre 2007

In questa lezione verrà descritto come eseguire l'override di un membro in una classe derivata.

Nella lezione precedente è stato descritto come ereditare da una classe base ed estendere la classe derivata con nuove proprietà. Oltre ad aggiungere nuove proprietà o nuovi metodi a una classe derivata, può essere necessario modificare il comportamento di proprietà o metodi esistenti. Questa operazione viene definita override.

È possibile ad esempio creare una classe Truck derivata da una classe Car che dispone di un metodo StartEngine. Se il furgone ha un motore diesel, il processo di avviamento del motore potrebbe essere diverso rispetto a quello di un'automobile e in tal caso sarà necessario eseguire l'override del metodo StartEngine per adeguarlo al furgone.

Override di proprietà e metodi

Per impostazione predefinita, non è possibile eseguire l'override delle proprietà e dei metodi di una classe. Per consentire a una classe derivata di eseguire l'override di una proprietà o un metodo, è necessario contrassegnare la proprietà o il metodo come sottoponibile a override aggiungendo nella relativa dichiarazione la parola chiave Overridable.

Public Overridable Property EngineType As String

Public Overridable Sub StartEngine(ByVal EngineType As String)

Quando si eredita da una classe base, le proprietà e i metodi contrassegnati come Overridable possono essere utilizzati senza apportare alcuna modifica oppure possono essere modificati in base alle esigenze aggiungendo nella relativa dichiarazione la parola chiave Overrides.

Public Overrides Property EngineType As String

Public Overrides Sub StartEngine(ByVal EngineType As String)

Nella classe Players creata nella lezione precedente potrebbe essere necessario eseguire l'override del metodo FullName per includere il numero del giocatore ed eliminare il codice che restituisce un secondo nome.

Procedura

Per eseguire l'override del metodo FullName

  1. Aprire il progetto Persons creato nella lezione precedente. Se questo progetto non è stato salvato, tornare alla lezione precedente Creazione di una classe in base a una classe esistente: utilizzo dell'ereditarietà e completare le procedure indicate.

  2. In Esplora soluzioni selezionare il nodo Persons.vb, quindi scegliere Codice dal menu Visualizza.

  3. Nell'editor di codice modificare la dichiarazione del metodo FullName come illustrato di seguito.

    Public Overridable Function FullName() As String
    
  4. In Esplora soluzioni selezionare il nodo Players.vb, quindi scegliere Codice dal menu Visualizza.

  5. Nell'editor di codice aggiungere alla classe il codice riportato di seguito.

    Public Overrides Function FullName() As String
        FullName = FirstName & " " & LastName & ", #" & numberValue
    End Function
    
  6. In Esplora soluzioni selezionare il nodo Form1.vb nel progetto PlayerTest, quindi scegliere Codice dal menu Visualizza.

  7. Nell'editor di codice modificare il codice dell'evento Button1_Click come illustrato di seguito.

    MsgBox(player1.Position & " " & player1.FullName & _
          " is now at bat.")
    
  8. Modificare il codice dell'evento Button2_Click come illustrato di seguito.

    MsgBox(player2.Position & " " & player2.FullName & _
          " is on deck.")
    
  9. Premere F5 per eseguire il programma e fare clic su ciascun pulsante per visualizzare i risultati.

    I risultati sono identici a quelli precedenti, nonostante ora venga utilizzato il metodo FullName sottoposto a override.

  10. Scegliere Salva tutto dal menu File.

Passaggi successivi

In questa lezione è stato descritto come eseguire l'override di un metodo. Nella lezione successiva verranno fornite informazioni sull'utilizzo di insiemi per la gestione di gruppi di oggetti simili.

Lezione successiva: Utilizzo degli insiemi per gestire più oggetti

Vedere anche

Attività

Creazione di una classe in base a una classe esistente: utilizzo dell'ereditarietà

Riferimenti

Overridable

Overrides