Jcroyais que c'était possible - C#/.NET managed - Programmation
Marsh Posté le 23-10-2002 à 11:13:01
...surcharger un attribut ? quel intéret ? il est le même tout le temps !
On surcharge des méthodes, pas des attributs (cela dit je ne connais pas C#)
Marsh Posté le 23-10-2002 à 11:24:51
bah comme tu le vois dans l'exemple l'attribut change de valeur en fonction de la sous-classe.
Ce que je veux faire c'est écrire uniquement dans la super-classe une fonction Get qui me retourne cet attribue (dont la valeur varie en fonction de la sous-classe). Ca m'éviterait de retaper une fonction Get dans chaque sous-classes qui retourne un attribut spécifique de chaque class.
Si malheureusement c'est le cas, je n'aurait réélement besoin d'héritage.
Marsh Posté le 23-10-2002 à 14:25:44
Mais... "surcharges" pas "g"...
Tes classes B et C héritent de A : elles ont accès à g
Vires ces "override int g; "
dans tes classes B et C, et ça marchera très bien !
Marsh Posté le 23-10-2002 à 14:39:07
Oups! Ta remarque ma fais réfléchir
J'ai pas fais gaffe mais j'ai oublié d'écrire que l'attribut était static d'où ma difficulté à ce que la fonction Get de ma super classe puisse lire les valeurs de l'attribut que je redéfinissait une nouvelle fois en static dans la sous classe pour lui attribuer une nouvelle valeur.
j'ai trouvé la sol, effectivement pas besoin de surcharge, juste attribué la valeur de l'attribut static dans un constructeur static de le sous classe.
Ya des jours où je me demande si jsuis pas bourré..
Marsh Posté le 23-10-2002 à 14:52:40
looping94 a écrit a écrit : j'ai trouvé la sol, effectivement pas besoin de surcharge, juste attribué la valeur de l'attribut static dans un constructeur static de le sous classe. |
T'as trouvé la sol... bah voyons !
Marsh Posté le 23-10-2002 à 14:59:12
Bon je reformule : ta forte contribution et tes remarques m'on aiguillés vers la bonne voie et m'a permis de mieux réfléchir.
Gracias el_gringo
Marsh Posté le 23-10-2002 à 11:00:29
Jcroyais que c'était possible de définir en C# des membres en virtual dans un héritage, mais la compil me dit que virtual et override sont invalides pour ces éléments :
---------
exemple :
abstract class A
{
virtual int g;
public Getg( return g
}
class B : A
{
override int g;
public B {g=2};
}
class C : A
{
override int g;
public C {g=3};
}
class B = new B();
int resultat = B.Getg();
---------
Y a t'il moyen de parvenir à cela ?