Wat betekent de beschermde modifier?

Ik ben het boek The Java Programming Language, 3rd editionaan het lezen.

In hoofdstuk 3.5 illustreert het de protectedmodifier met de volgende woorden:

Om precies te zijn, behalve toegankelijk te zijn binnen de klasse zelf en te coderen binnen de
hetzelfde pakket, kan een beschermd lid ook worden benaderd vanuit een klasse via objectverwijzingen
die van minstens hetzelfde type zijn als de klasse dat wil zeggen, referenties van het type van de klasse of
een van zijn subtypes.

De woorden maken me verward, in tweeaspecten:

1.beschermd lid toegankelijk via code binnen hetzelfde pakket? Wat ik eerder wist, is dat een beschermd lid alleen toegankelijk is voor de subklasse…

2.Ik begrijp niet wat a protected member can also be accessed from ...betekent, kan iemand het me uitleggen?


Antwoord 1, autoriteit 100%

  1. Ja, protectedleden zijn toegankelijk vanuit de klasse zelf, subklassen van de klasse en ook alle klassen in hetzelfde pakket van de klasse (maakt niet uit of dit subklassen of niet). Als je dat laatste deel nog niet kende, dan heb je zojuist iets nieuws geleerd.

  2. Het betekent gewoon dat je die leden kunt gebruiken; als een lid niet toegankelijk is, betekent dit dat u een compilerfout krijgt wanneer u het probeert te gebruiken.


Antwoord 2, autoriteit 60%

In Java betekent protecteddat het lid toegankelijk is voor elke klasse in hetzelfde pakket en voor subklassen, zelfs als ze zich in een ander pakket bevinden.

Opmerking

A protected variable is not visible outside the package

bijvoorbeeld B breidt A uit en A heeft een beschermde int x; het kan worden gebruikt binnen de klasse B. Maar kan niet worden geopend met behulp van de instantievariabele


Antwoord 3, autoriteit 10%

1) Ja, beveiligde leden zijn toegankelijk voor klassen uit hetzelfde pakket. Zo werkt Java.

2) Dat betekent dat subklassen er toegang toe hebben.


Antwoord 4

Ik begrijp niet waartoe een beschermd lid ook toegang kan krijgen… bedoel, kan iemand het me uitleggen alstublieft?

Je hebt bijvoorbeeld een object A en een object B, beide van dezelfde klasse. Object A kan de beschermde eigenschappen en methoden van object B opvragen als het ernaar verwijst. De beschermde modifier wordt afgedwongen op klasseniveau, niet op objectniveau. Dit kan in sommige situaties van pas komen.


Antwoord 5

Hier zijn de antwoorden

  1. Ja. Beveiligde leden (instantievariabelen en methoden) van een klasse kunnen worden benaderd door andere klassen binnen hetzelfde pakket, evenals door elke andere klasse die deze klasse uitbreidt met het lid dat moet worden benaderd. In dezelfde specificatie hebben ze ook de tabel gegeven waarin het toegangsniveau strikt toeneemt, met alle toegangen toegestaan in het voorgaande niveau: private -> pakket -> beschermd -> openbaar

  2. Omdat beschermde leden (instantievariabelen / toestanden en methoden / gedragingen) van een klasse X worden overgenomen en zichtbaar zijn als onderdeel van de subklassen van X, zeg Y1, Y2, Y3 en kan verder naar de volgende niveaus, kunnen alle objectverwijzingen van het type X of Y1, Y2, y3 worden gebruikt om toegang te krijgen tot dat beschermde lid.


Antwoord 6

Zie het maar als tussen openbaar en privé. Je hebt toegang tot alles van openbare lessen en minder van privélessen.

Other episodes