Member 12957521 Ответов: 1

Почему я не могу переопределить статические методы?


Почему я не могу переопределить статические методы в c#

Что я уже пробовал:

Я попытался переопределить статический метод, но не смог объяснить .

1 Ответов

Рейтинг:
10

OriginalGriff

Вы не можете переопределить статические методы, потому что метод не связан с каким - либо конкретным экземпляром класса, но является общим для всех экземпляров, поэтому он не может быть виртуальным.

Это означает, что когда вы получаете доступ к нестатическому методу, вы делаете это через экземпляр - во многом так же, как вы используете "мой автомобиль", "ваш автомобиль", "этот автомобиль" или "тот автомобиль", чтобы указать один отдельный автомобиль из "фазового пространства" всех возможных автомобилей. Используя этот экземпляр, вы можете задавать вопросы или получать информацию:

What colour is your car?
What fuel does this car use?
Вы не можете задавать эти вопросы, не указывая конкретный автомобиль, потому что "какого цвета автомобиль?" - это нелепый вопрос-у него нет единого ответа. Но вы можете сказать :" сколько колес у автомобиля?" потому что по определению все автомобили имеют четыре колеса - вам не нужен экземпляр, чтобы задать вопрос.
В терминах C#: "сколько колес?" это статический метод - вы получаете доступ к нему через имя класса, а не через экземпляр. Это означает, что вы всегда вызываете один и тот же метод - чтобы вызвать статический метод с тем же именем в производном классе, вам придется использовать вместо него имя производного класса.
Нестатические методы различны: они доступны через фактический экземпляр, который может быть классом или производным классом , и система может выбрать" самое высокое " переопределение метода для фактического класса экземпляра, когда вы пытаетесь получить к нему доступ.