Мне сказали, что защищенную переменную в базовом классе можно получить в производном классе либо с использованием , либо this
. Я сейчас полностью смущен, потому что ключевое слово относится к текущему классу (производному классу).различие между ключевым словом 'base' и 'this'
public class A
{
protected int i;
}
public class B :A
{
void Display()
{
this.i=10;
// (or)
base.i=10;
}
}
Есть ли разница в технических характеристиках? Прежде всего, сегодня я размышляю над тем, почему я не могу создать объект A внутри метода Display()
и получить доступ к переменной i через этот объект, поскольку само определение защищенного доступа говорит, что к нему можно получить доступ в любом производном классе. Люди, я видел некоторые потоки, однако то, что они говорят, мы не можем создать объект и получить доступ к защищенным членам. Я чувствую, это довольно противоречит определению.
Может кто-то может понравиться мне объяснить оба моих выше вопросы
* Есть ли какие-либо технические отличия? * Нет, ни 'this.i', ни 'base.i' будет компилироваться, потому что' i' определен в 'A', а' B' - другой класс. Вы имели в виду сказать 'public class B: A'? –
'this',' base' в вашем коде не смогут получить доступ к 'i'..you не наследуют A – Anirudha
Предполагая, что вы намеревались наследовать от' A' (но в остальном не оставляйте вещи одинаковыми), тогда нет разница с текущим кодом. Однако, если вы должны добавить поле 'i' в класс' B', то 'this.i' будет ссылаться на это поле, тогда как' base.i' все равно будет ссылаться на версию базового класса. – dlev