Hoe een klasse moet worden geërfd

Hoe definieer je een klasse die moet worden geërfd? in C #

11
Komende van VB.Net? Succes! Ook behandeld in stackoverflow.com/questions/5189405/& hellip;
toegevoegd de auteur dash, de bron

5 antwoord

U markeert de klasse als abstract (dit is de C# -analoog naar de VB.NET Must Inherit ).

Dit zorgt ervoor dat het niet direct kan worden geïnstantieerd.

Uit het gekoppelde MSDN-artikel:

De abstracte wijziging geeft aan dat het item dat wordt gewijzigd een ontbrekende of onvolledige implementatie heeft. De abstracte modifier kan worden gebruikt met klassen, methoden, eigenschappen, indexeerders en gebeurtenissen. Gebruik de abstracte wijziging in een klassenverklaring om aan te geven dat een klasse alleen is bedoeld als basisklasse van andere klassen . Leden gemarkeerd als abstract, of opgenomen in een abstracte klasse, moeten worden geïmplementeerd door klassen die zijn afgeleid van de abstracte klasse.

(nadruk van mij)

33
toegevoegd
@thechmodmaster - Nou, je kunt niet rechtstreeks een instantie van een dergelijke klasse maken. U kunt alleen exemplaren van klassen maken die ervan overerven. Als dat overeenkomt met uw concept van "moet worden geërfd", weet ik het niet. Het komt overeen met de mijne.
toegevoegd de auteur Oded, de bron
maar wanneer u een klasse als abstract definieert, betekent dit dan dat deze moet worden geërfd?
toegevoegd de auteur thechmodmaster, de bron
Het klinkt logisch voor mij .... het is een vraag uit een werkinterviw
toegevoegd de auteur thechmodmaster, de bron

Gebruik de modifier abstract .

public abstract class MyClass()
{
    ...
}
6
toegevoegd

U kunt een klasse definiëren als abstract , of deze een protected-only constructor geven. abstract is beter.

4
toegevoegd

Als u een klasse wilt maken die moet worden overgenomen, moet u deze markeren met de modifier abstract .

public abstract MyClass
{
}
3
toegevoegd

Het is niet mogelijk om de noodzaak van afleiding of implementatie in code af te dwingen, als dat een vraag was.

Maar:

U kunt een -interface definiëren om de consument te dwingen het < te implementeren .

Of u kunt abstracte klasse definiëren met alleen abstracte leden om de consument te dwingen alle hiervan te negeren.

Ik hoop dat dit helpt.

1
toegevoegd
Ja, dat is wat ik bedoel: hoe een klasse te definiëren op een manier die het zou moeten erven. je wilt ervoor zorgen dat deze klasse wordt overgenomen.
toegevoegd de auteur thechmodmaster, de bron