Acceso espacio miembro del segundo padre (herencia)
-
13-09-2019 - |
Pregunta
Aquí está mi diseño actual: (la pregunta es el comentario)
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
}
}
Como se puede ver, no puedo acceder a los miembros de A
utilizando base
en C. ¿Cómo podría acceder a él? Gracias:)
Solución
Si comete foo protegido,
class A
{
protected int foo;
}
A continuación, una base simple hará:
void bar()
{
//I want to access foo
base.foo; // will work now
// base.base.foo // Doesn't work, of course
}
Sin embargo, sería mejor construir un (protegido) en torno a la propiedad foo:
class A
{
private int _foo;
protected int Foo
{
get { return _foo; }
set { _foo = value; }
}
}
Otros consejos
El campo en A se declara privada. Que debe ser protegido para las clases derivadas para acceder a ella.
Ponga público frente 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
}
}
Por defecto, a menos que especifique lo contrario todos los miembros son privadas.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow