membre d'accès à la deuxième mère (héritage)
-
13-09-2019 - |
Question
Voici ma configuration actuelle: (la question est le commentaire)
class A
{
int foo;
}
class B : A {}
class C : B
{
void bar()
{
//I want to access foo
base.foo; // Doesn't work
base.base.foo // Doesn't work, of course
}
}
Comme vous pouvez le voir, je ne peux pas accéder aux membres de A
en utilisant base
en C. Comment pourrais-je accéder? Merci:)
La solution
Si vous faites foo protégé,
class A
{
protected int foo;
}
alors une base simple fera:
void bar()
{
//I want to access foo
base.foo; // will work now
// base.base.foo // Doesn't work, of course
}
Mais il serait préférable de construire une propriété (protégée) autour foo:
class A
{
private int _foo;
protected int Foo
{
get { return _foo; }
set { _foo = value; }
}
}
Autres conseils
Le champ A est déclarée privée. Elle doit être protégée pour les classes dérivées pour y accéder.
Mettre public devant int foo;
class A
{
public int foo;
}
class B : A {}
class C : B
{
void bar()
{
//I want to access foo
base.foo; // Now you can see it
}
}
Par défaut, sauf indication contraire tous les membres sont privées.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow