Ответ 1
Java final
ключевое слово является эквивалентом ключевых слов С# sealed
, readonly
и sealed
.
Два из этих трех несколько отличаются в Java и С#:
В Java методы по умолчанию виртуальны, поэтому любой метод может быть объявлен final
, чтобы предотвратить его переопределение. В С# методы по умолчанию не являются виртуальными, поэтому только переопределенные методы могут быть объявлены sealed
(чтобы они не переопределялись)
В Java любая переменная или поле может быть объявлено final
, чтобы предотвратить ее изменение после инициализации (И, для полей, вне конструктора). В С# поля могут быть объявлены readonly
для точного же эффекта, но локальные переменные не могут. Обратите внимание: Java не имеет эквивалента ключевого слова С# const
. (const
в С# оцениваются во время компиляции, а значения жестко закодированы вместо ссылки)
Для классов классы С# sealed
и классы Java final
являются точно такими же (AFAIK).