#c# #oop
#c# #ооп
Вопрос:
На c я бы сделал
class A
{
public:
virtual void stuff()
{
//something
}
};
class B : public A
public:
virtual void stuff()
{
//something2
A::stuff() //something
}
};
Как бы я это сделал на C #?
Я пытался
public void stuff()
{
//something2
A.stuff(); //something
}
но это не работает
Ответ №1:
base
это ключевое слово для ссылки на ваш суперкласс в C #. Использовать:
base.stuff();
Комментарии:
1. Спасибо, я приму это как ответ, как только это позволит мне 🙂
2. Похоже ли это на super.stuff() в Java?
3. @pratnala: Да.
4. Был
base
выбран с единственной целью отличаться? Кажется, что любой другой язык с наследованием вызывает этоsuper
…5. @ArtOfWarfare: Я имею в виду, понятия не имею, но я предполагаю, что это не сильно отличается от ‘this’ против ‘self’ (Python)…
Ответ №2:
Используйте base
. Нравится base.stuff();
Ответ №3:
Просто чтобы добавить к приведенному выше ответу, base.stuff() работает, если только это не конструктор, который вы пытаетесь вызвать, и в этом случае он вызывается как:
class A
{
public:
public A(){}
};
class B : A
{
public B() : base()
{
}
};