У меня есть класс с подклассом. Суперкласс имеет свойство Position
. Подкласс должен выполнить дополнительную операцию при изменении свойства Position
, поэтому я пытаюсь переопределить метод установки и вызвать установщик суперкласса.
Я думаю, что у меня есть вызывающая часть установщика суперкласса вниз, но я не могу понять, как здесь работает замещающий синтаксис.
Вот моя лучшая попытка:
Геттер нужен только для доказательства концепции - предположим, я хотел бы переопределить и это?
Геттер и сеттер выдают мне ошибки такой формы:
не может переопределить унаследованный член superClassName.Position. [Gs ] et ', потому что он не помечен как виртуальный, абстрактный,or override
Вот и снимок экрана с ошибками, на всякий случай:
Я также пробовал использовать ключевое слово override перед набором
. Удаление лишнего получателя не имеет никакого эффекта.
Какой правильный синтаксис?
Переопределение в порядке. Однако, как говорится в сообщении об ошибке, необходимо пометить свойство в базовом классе как виртуальное, чтобы иметь возможность его переопределить:
public virtual Vector2 Position
В отличие от Java, члены класса по умолчанию не являются виртуальными в C #. Если вы не можете изменить базовый класс, вам не повезло.
Проблема указана вам в сообщении об ошибке:)
Вы не можете переопределить элементы, которые не являются виртуальными (или абстрактными).
Ваш суперкласс должен иметь virtual
в определении свойства:
public virtual Vector2 Position { ... }