Area soci del secondo genitore (eredità)
-
13-09-2019 - |
Domanda
Ecco il mio layout attuale: (la domanda è il commento)
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
}
}
Come si può vedere, non posso accedere ai membri di A
utilizzando base
in C. Come avrei potuto accedervi? Grazie:)
Soluzione
Se si effettua foo protetta,
class A
{
protected int foo;
}
quindi una base semplice farà:
void bar()
{
//I want to access foo
base.foo; // will work now
// base.base.foo // Doesn't work, of course
}
Ma sarebbe meglio costruire un (protetto) proprietà intorno foo:
class A
{
private int _foo;
protected int Foo
{
get { return _foo; }
set { _foo = value; }
}
}
Altri suggerimenti
Il campo in A viene dichiarata private. Esso deve essere protetto per le classi derivate per accedervi.
Mettere pubblico di fronte 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
}
}
Per impostazione predefinita se non diversamente specificato tutti i membri sono privati.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow