Что нужно для переопределения функции в .NET - PullRequest
3 голосов
/ 15 марта 2011

Сегодня меня спросили об этом в интервью, и я просто не могу понять это.Мне задавали все вопросы от начала до продвинутых вопросов, но этот вырвался.Я описывал наследование и полиморфизм, а затем возник этот вопрос.Очевидно, что я никогда не пытался переопределить каждый метод в классе [C # / C ++], но я не знал, что было что-то, что требовалось для переопределения определенного метода (например, .ToString).Я неправильно истолковал вопрос или что-то требуется?И если да, то, что заставляет это требование?

Ответы [ 5 ]

9 голосов
/ 15 марта 2011
  • базовый класс не должен быть sealed
  • метод в базовом классе должен быть помечен как virtual или abstract
1 голос
/ 15 марта 2011

В C ++ и C # вы должны объявить функцию базового класса как virtual.В противном случае функция в производном классе с таким же именем и сигнатурой будет скрывать версию базового класса.

1 голос
/ 15 марта 2011

Метод, который вы переопределяете, должен быть объявлен как virtual или abstract (и быть незапечатанным типом).В противном случае, вы можете скрыть это.

0 голосов
/ 15 марта 2011

Если вы понимаете полиморфизм и наследование, то я чувствую, что вы, возможно, задумывались над вопросом. Я имею в виду переопределение C # просто так:

  public override double parentFunction() 
  {
     //child implementation
  }

... и родительская функция должна быть удалена как виртуальная.

Не услышав дословно вопрос, трудно сказать, что искал интервьюер. Мой опыт работы с интервьюерами заключается в том, что они просто хотят убедиться, что вы понимаете общие черты, но кто знает. Мне было бы интересно узнать, если вы получите работу :) Удачи!

0 голосов
/ 15 марта 2011

Метод, который вы хотите переопределить, должен быть отмечен virtual или abstract.

...