Amico e amico protetto in VB.NET

I modificatori di accesso (chiamati anche regole di ambito) determinano quale codice può accedere a un elemento, ovvero a quale codice è autorizzato a leggerlo o scriverlo. Nelle versioni precedenti di Visual Basic, c'erano tre tipi di classi. Questi sono stati riportati a .NET. In ognuno di questi, .NET consente l'accesso solo al codice:

  • Privato - all'interno dello stesso modulo, classe o struttura.
  • Amico - all'interno della stessa assemblea.
  • Pubblico - ovunque nello stesso progetto, da altri progetti che fanno riferimento al progetto e da qualsiasi assieme creato dal progetto. In altre parole, qualsiasi codice che può trovarlo.

VB.NET ha anche aggiunto uno e mezzo nuovi.

  • protetta
  • Amico protetto

La "metà" è perché Protected Friend è una combinazione della nuova classe Protected e della vecchia classe Friend.

I modificatori Protected e Protected Friend sono necessari perché VB.NET implementa l'ultimo requisito OOP che mancava a VB: Eredità.

Precedentemente a VB.NET, i programmatori C ++ e Java supercili e sdegnosi avrebbero sminuito VB perché, secondo loro, "non era completamente orientato agli oggetti". Perché? Le versioni precedenti mancavano di eredità. L'ereditarietà consente agli oggetti di condividere le loro interfacce e / o implementazione in una gerarchia. In altre parole, l'ereditarietà rende possibile per un oggetto software che assume tutti i metodi e le proprietà di un altro.

instagram viewer

Questa è spesso chiamata la relazione "is-a".

  • Un veicolo "is-a" per camion.
  • Una forma quadrata "is-a".
  • Un cane "è-un" mammifero.

L'idea è che metodi e proprietà più generali e ampiamente utilizzati siano definiti classi "parent" e questi siano resi più specifici nelle classi "child" (spesso chiamate sottoclassi). "Mammifero" è una descrizione più generale di "cane". Le balene sono mammiferi.

Il grande vantaggio è che puoi organizzare il tuo codice, quindi devi solo scrivere codice che fa qualcosa che molti oggetti devono fare una volta nel genitore. A tutti i "dipendenti" deve essere assegnato un "numero di dipendente". Codice più specifico può far parte delle classi secondarie. Solo i dipendenti che lavorano nell'ufficio generale devono disporre di una chiave tessera porta dipendenti.

Questa nuova capacità di ereditarietà richiede tuttavia nuove regole. Se una nuova classe si basa su una precedente, Protected è un modificatore di accesso che riflette quella relazione. È possibile accedere al codice protetto solo dall'interno della stessa classe o da una classe derivata da questa classe. Non si desidera che le chiavi della scheda della porta dei dipendenti vengano assegnate a nessuno tranne ai dipendenti.

Come notato, Protected Friend è una combinazione dell'accesso di Friend e Protected. È possibile accedere agli elementi di codice dalle classi derivate o dall'interno dello stesso assembly o entrambi. L'amico protetto può essere utilizzato per creare librerie di classi poiché il codice che accede al codice deve trovarsi solo nello stesso assembly.

Ma anche Friend ha quell'accesso, quindi perché dovresti usare Protected Friend? Il motivo è che Friend può essere utilizzato in un file sorgente, Spazio dei nomi, Interfaccia, Modulo, classe o struttura. Ma l'amico protetto può essere utilizzato solo in una classe. Protected Friend è ciò di cui hai bisogno per creare le tue librerie di oggetti. Friend è solo per situazioni di codice difficili in cui è veramente necessario un ampio accesso agli assembly.