Quel est le moyen le plus simple de faire c # pas instancier une classe sauf hériter? p>
semble bizarre mais je ne veux pas expliquer le pourquoi. J'ai une classe de base et deux cours qui héritent. Je veux utiliser la classe dérivée uniquement et pas la base. La classe de dérive n'a aucune fonction supplémentaire. Quel est le moyen le plus simple de ne pas me permettre d'écrire une nouvelle base de base (); donc je ne l'utilise pas accidentellement? J'ai des fonctions qui fonctionnent sur la classe de base et non le dérivé. P>
8 Réponses :
Faire la classe an abstrait code> classe de base. abstract class Person { }
class Programmer : Person { }
var person = new Person(); // compile time error
var programmer = new Programmer(); // ok
Vous ne pouvez même pas voir le nom de la classe sur la liste IntelliSense lorsque vous essayez de l'instancier, ce qui est génial pour la prise de conscience :)
La classe de base peut-elle être abstraite? Cela le ferait. P>
Définir la classe à résumé:
public abstract class BaseClass {
...
}
au lieu de la normale:
Le fait P> "Classe publique MyClass" Code> P> "public abstract Class MyClass"
Faire le constructeur de basoclass code> protégé:
Seulement s'il ne peut pas faire le résumé de la classe de base pour une raison étrange.
Il y a de meilleures solutions ci-dessus.
La manière dont vous décrivez votre besoin, rendant votre classe Si vous n'aviez pas besoin de partager le code, une interface serait une option agréable. Cela vous permet de
la mettre en œuvre de manière très similaire à une classe d'Abstarct et de jeter votre
implémentations dans elle. p>
J'espère que cela ajoute une certaine valeur. P> abstrait code> est la voie à suivre. Ce sera
vous empêcher d'instantifier la classe de base et vous permettra d'appeler les fonctions sur
ce. Cela vous permettra également de marquer des fonctions et des propriétés comme résumé et
forcer les classes héritées à les mettre en œuvre. p>
Utilisez un constructeur protégé pour la classe de base p>
J'aime les questions où une personne décrit une fonctionnalité existante à la lettre (dans ce cas de classes abstraites). Ce sont des questions soignées et bien rangées avec de telles réponses claires, elles me satisfont grandement.
Il se distingue que quelqu'un m'a également évité. Bizarre.
@ ACIDEZOMBIE24, je suppose que vous avez accepté une réponse impopulaire lorsqu'il y avait des réponses avec> 20 upvotes que vous avez ignorés.
Quel est le gros problème? I +1 Les 20 votes Les deux réponses sont les mêmes. Utilisez le mot-clé abstrait.