Abstract
Apparence
Définition
Une classe abstraite possède au moins un membre abstrait, elle ne peut donc pas être instanciée.
A la différence d'une interface, elle peut contenir du code.
Code
interface IInterface
{
int MyProperty { get; set; }
void MyMethod();
}
// une classe doit être déclarée abstraite si elle possède au moins un membre abstrait
// elle ne peut être instanciée
abstract class AbstractClass : IInterface
{
// les membres abstrait, à la différence des membres virtuels, ne contiennent pas d'implémentation
public abstract int MyProperty { get; set; }
public abstract void MyMethod();
// à la différence de l'interface la classe abstraite peut avoir des champs,
// des méthodes et des propriétés non-abstraites implémentées
int _myField = 0;
public void MyOtherMethod() { /* code */ }
// constructeur, sert seulement à factoriser le code des constructeurs implémentant la classe abstraite
protected AbstractClass(string argument)
{
MyProperty = argument;
}
}
// la classe qui hérite d'une classe abstraite doit implémenter ses membres abstraits
class MyClass : AbstractClass
{
public override int MyProperty
{
get { /* code */ }
set { /* code */ }
}
public override void MyMethod() { /* code */ }
public MyClass(string argument) : base(argument)
{ }
}
|