Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C# Уточнение по абстракции и sealed

Sky Topaz Профи (602), на голосовании 4 года назад
Я программирую на движке Unity на языке C#.

Хотелось бы кое-что уточнить, касающиеся abstract. Как я понимаю если в каком-либо классе содержится abstract метод, то класс ОБЯЗАН тоже иметь этот модификатор? Так ли это?

И ещё одно уточнение. Если в классе реализован virtual метод от другого класса, и на этом реализованом методе есть модификатор sealed, то если весь этот класс станет дочерним, то sealed метод тоже унаследуется, но его уже просто нельзя будет переопределить? Прав ли я?
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (469466) 4 года назад
>ОБЯЗАН тоже иметь этот модификатор?
Ну проверить-то - дело 2-х секунд. Tакой модификатор вполне может быть обязательным, чтобы компилятор работал быстрее.

>тоже унаследуется, но его уже просто нельзя будет переопределить?
М-м-м... Через overload нельзя. Но переписать его можно (но ни в коем случае не нужно, потому что потом концов не найдешь):

class foo1
{
protected virtual void boo()
{

}
}

class foo2: foo1
{
protected sealed override void boo()
{

}
}

class foo3 : foo2
{
protected new void boo()
{
base.boo();
}
}
Похожие вопросы