Доступ к члену второго родителя (наследование)
-
13-09-2019 - |
Вопрос
Вот мой текущий макет:(вопрос - это комментарий)
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
}
}
Как видите, я не могу получить доступ к членам A
используя base
в С.Как я могу получить к нему доступ?Спасибо :)
Решение
Если вы сделаете foo защищенным,
class A
{
protected int foo;
}
тогда подойдет простая база:
void bar()
{
//I want to access foo
base.foo; // will work now
// base.base.foo // Doesn't work, of course
}
Но было бы лучше создать (защищенное) свойство вокруг foo:
class A
{
private int _foo;
protected int Foo
{
get { return _foo; }
set { _foo = value; }
}
}
Другие советы
Поле в A объявлено закрытым.Он должен быть защищен для доступа к нему производных классов.
Поставьте public перед 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
}
}
По умолчанию, если вы не укажете иное, все участники являются частными.
Не связан с StackOverflow