Vriend en beschermde vriend in VB.NET

Toegangsmodificatoren (ook scopingregels genoemd) bepalen welke code toegang heeft tot een element, dat wil zeggen welke code toestemming heeft om het te lezen of ernaar te schrijven. In eerdere versies van Visual Basic waren er drie soorten klassen. Deze zijn overgedragen naar .NET. In elk hiervan staat .NET alleen toegang toe tot code:

  • Privé - binnen dezelfde module, klasse of structuur.
  • Vriend - binnen dezelfde vergadering.
  • Openbaar - overal in hetzelfde project, van andere projecten die naar het project verwijzen en van elke assemblage die vanuit het project is gebouwd. Met andere woorden, elke code die deze kan vinden.

VB.NET heeft ook anderhalve nieuwe toegevoegd.

  • Beschermd
  • Beschermde vriend

De "helft" is omdat Protected Friend een combinatie is van de nieuwe klasse Protected en de oude klasse Friend.

De Protected and Protected Friend-modifiers zijn nodig omdat VB.NET de laatste OOP-vereiste implementeert die VB miste: Erfenis.

Voorafgaand aan VB.NET zouden hooghartige en minachtende C ++ en Java-programmeurs VB kleineren omdat het volgens hen "niet volledig objectgericht" was. Waarom? Eerdere versies hadden geen overerving. Inheritance stelt objecten in staat hun interfaces en / of implementatie in een hiërarchie te delen. Met andere woorden, overerving maakt het mogelijk dat het ene softwareobject alle methoden en eigenschappen van een ander overneemt.

instagram viewer

Dit wordt vaak de "is-a" -relatie genoemd.

  • Een vrachtwagen is een voertuig.
  • Een vierkante "is-een" vorm.
  • Een hond is een zoogdier.

Het idee is dat meer algemene en veelgebruikte methoden en eigenschappen gedefinieerde "bovenliggende" klassen zijn en deze specifieker worden gemaakt in "onderliggende" klassen (vaak subklassen genoemd). 'Zoogdier' ​​is een algemenere beschrijving dan 'hond'. Walvissen zijn zoogdieren.

Het grote voordeel is dat je je code kunt ordenen, zodat je alleen code hoeft te schrijven die iets doet wat veel objecten een keer in de ouder moeten doen. Alle "werknemers" moeten een "werknemersnummer" toegewezen krijgen. Meer specifieke code kan deel uitmaken van de kinderklassen. Alleen werknemers die op het algemene kantoor werken, moeten een sleutel voor de deur van de werknemer toegewezen krijgen.

Deze nieuwe mogelijkheid tot overerving vereist echter nieuwe regels. Als een nieuwe klasse is gebaseerd op een oude, is Protected een toegangsmodificator die die relatie weerspiegelt. Beveiligde code is alleen toegankelijk vanuit dezelfde klasse of vanuit een klasse die is afgeleid van deze klasse. U wilt niet dat de sleutels van de medewerkersdeurkaart aan iemand anders worden toegewezen dan aan medewerkers.

Zoals opgemerkt, is Beschermde vriend een combinatie van de toegang van zowel Vriend als Beschermd. Code-elementen zijn toegankelijk vanuit afgeleide klassen of vanuit dezelfde assembly, of beide. Beschermde vriend kan worden gebruikt om klassenbibliotheken te maken, aangezien code die toegang heeft tot uw code zich alleen in dezelfde assembly hoeft te bevinden.

Maar Friend heeft ook die toegang, dus waarom zou je Protected Friend gebruiken? De reden is dat Friend kan worden gebruikt in een bronbestand, Naamruimte, Koppel, Module, klasse of structuur. Maar een beschermde vriend kan alleen in een klas worden gebruikt. Beschermde vriend is wat je nodig hebt om je eigen objectbibliotheken te bouwen. Vriend is alleen voor moeilijke codesituaties waar montage brede toegang echt vereist is.