Disons que la classe A est abstraite et définit les propriétés en lecture seule que la classe B, qui en hérite, doit fournir. Est-il préférable pratique de définir des propriétés telles que abstrait ou tel que protégé:Héritage des propriétés en lecture seule: abstract ou set-protected
public abstract class A
{
public abstract int Value { get; }
}
public class B : A
{
public override int Value { get { return 1; } }
}
OU
public abstract class A
{
public int Value { get; protected set; }
}
public class B : A
{
public B()
{
Value = 1;
}
}
Je pense que la première solution est probablement mieux, mais je voudrais entendre d'autres opinions.
Je vais accepter votre réponse car elle a quelques bons points et personne d'autre n'a contribué. Cependant dans l'intervalle j'ai fini par utiliser la solution 1. Considérez ce qui suit en utilisant la solution 2: une troisième classe C hérite de B et elle veut également exposer cette valeur. En outre, la valeur n'est pas quelque chose de constant mais de nombreuses méthodes dans B et C. Il peut arriver que B fournisse sa valeur lors de l'exécution de l'une de ses méthodes au lieu de ce que C devrait fournir. En d'autres termes, C ne surcharge pas correctement cette propriété. J'ai donc conclu que la solution 1 est généralement plus appropriée. – Zmaster