очень простой базовый класс:различный тип возврата для такого же метода базового класса
class Figure {
public virtual void Draw() {
Console.WriteLine("Drawing Figure");
}
}
Это наследующий класс:
class Rectangle : Figure
{
public int Draw()
{
Console.WriteLine("Drawing Rectangle");
return 42;
}
}
Компилятор будет жаловаться, что прямоугольник в «Draw» скрывает Жеребьевка фигуры , и просит добавить либо ключевое слово new
, либо override
. Просто добавить new
решает эту проблему:
class Rectangle : Figure
{
new public int Draw() //added new
{
Console.WriteLine("Drawing Rectangle");
return 42;
}
}
Однако Figure.Draw имеет пустое тип возвращаемого значения, Rectangle.Draw возвращает Int. Я удивлен, что здесь возможны разные типы возврата ... Почему?
Для меня эти 4 строки показывают, как с ума все это. Кажется, это по дизайну, предназначенное новым ключевым словом ... спасибо! – Konerak