variable de classe de base d’access dans la classe dérivée

class Program { static void Main(ssortingng[] args) { baseClass obj = new baseClass(); obj.intF = 5; obj.intS = 4; child obj1 = new child(); Console.WriteLine(Convert.ToSsortingng(obj.addNo())); Console.WriteLine(Convert.ToSsortingng(obj1.add())); Console.ReadLine(); } } public class baseClass { public int intF = 0, intS = 0; public int addNo() { int intReturn = 0; intReturn = intF + intS; return intReturn; } } class child : baseClass { public int add() { int intReturn = 0; intReturn = base.intF * base.intS; return intReturn; } } 

Je veux accéder à intF et intS dans une classe enfant quelle que soit l’entrée i, mais je reçois toujours les valeurs des deux variables 0. 0 est la valeur par défaut des deux variables.

Quelqu’un peut-il me dire comment puis-je obtenir la valeur ???

merci à vous ..

Oui, Zero est ce que vous devriez obtenir, puisque vous avez créé une instance unique de la classe enfant et que vous n’avez atsortingbué aucune valeur à ses variables héritées,

 child obj1 = new child(); 

vous avez plutôt instancié une autre instance de la classe de base séparément et assignez une valeur à ses membres,

 baseClass obj = new baseClass(); 

à la fois le runtime, l’instance de classe de base et l’instance enfant sont des objects totalement différents, vous devez donc affecter les valeurs enfants séparément, comme

 obj1.intF = 5; obj1.intS = 4; 

alors seulement vous obtiendrez le résultat souhaité.

Vous avez deux objects distincts – c’est le problème. Les valeurs des variables de classe de base dans l’object référencé par obj1 sont 0, car elles n’ont pas été définies sur autre chose. Rien ne permet de lier cet object à l’object mentionné par obj .

Si vous devez accéder aux variables d’un autre object, vous devez le mettre à la disposition de celui qui tente d’accéder aux données. Vous pouvez passer obj comme argument d’une méthode, ou peut-être en faire une propriété. Il y a beaucoup d’approches différentes ici, mais nous ne soaps pas quelle est la vue d’ensemble – ce que vous essayez réellement de faire. Une fois que vous comprenez pourquoi cela ne fonctionne pas comme prévu, vous pouvez commencer à penser à ce que vous essayez réellement de faire.

Juste pour être clair, cela n’a rien à voir avec l’inheritance. Cela a tout à voir avec la création de deux objects distincts. Vous obtiendriez le même effet si vous utilisiez une seule classe, mais que vous créiez deux instances différentes de cette classe.