Beschrijving:
Er zijn twee klassen, A en B, I A erft klasse B, en dan is B de ouderklasse
Ik heb de TestAttribut-eigenschappen respectievelijk ingesteld in klasse A en klasse B...
Neem vervolgens de kenmerken van het object, en de code is als volgt:
Ik ontdekte dat het aantal resultaten 1 is, en het attribuut is het attribuut dat door A wordt gezet, niet het attribuut dat B het heeft, laat staan samengevoegd, waarom is dat zo???
[Help("BaseClass")] publicclass Base{} publicclass Derive : Base{} Er zijn hier vier mogelijke combinaties:
[AttribuutGebruik(AttribuutDoelen.Klasse, ToelaatMeervoudig = onwaar, Geërfd = onwaar] [AttribuutGebruik(AttribuutDoelen.Klasse, AllowMultiple = waar, Geërfd = onwaar] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true ] [AttribuutGebruik(AttribuutDoelen.Klasse, AllowMultiple = waar, Geërfd = waar] Het eerste geval:
Als we de Derive-klasse bevragen (we zullen later zien hoe we de eigenschappen van een klasse tijdens runtime kunnen bevragen), zullen we ontdekken dat de Help-functie niet bestaat omdat de geërfde eigenschap op false is gezet.
Tweede geval:
Hetzelfde als in het eerste geval, omdat geërfd ook op false wordt gezet.
De derde situatie:
Om het derde en vierde geval uit te leggen, voegen we eerst wat code toe aan de afgeleide klasse:
[Help("BaseClass")] publicclass Base{}[Help("DeriveClass")] publicclass Derive : Base{} Laten we nu de Help-functie opzoeken, we kunnen alleen de eigenschappen van de afgeleide klasse krijgen, omdat geërfd op waar staat, maar AllowMultiple op onwaar. Daarom wordt de Help-functie van de basisklasse overschreven door de hulpfunctie van de afgeleide klasse.
De vierde situatie:
Hier zullen we zien dat de afgeleide klasse zowel de Help-functie van de basisklasse als een eigen Help-functie heeft, omdat AllowMultiple op waar is gezet.
|