Есть ли какая-либо функциональная разница между ключевым словом С# и ключевым словом Java?

Возможный дубликат:
Что эквивалентно финалу Javas на С#?

В финале Java применяется не только класс.

Итак, интересно: есть ли функциональное различие между двумя ключевыми словами?

Спасибо, и извините за относительно нужный вопрос.

Быстрый поиск Google не удовлетворил мои потребности.

Ответы

Ответ 1

Java final ключевое слово является эквивалентом ключевых слов С# sealed, readonly и sealed.

Два из этих трех несколько отличаются в Java и С#:

В Java методы по умолчанию виртуальны, поэтому любой метод может быть объявлен final, чтобы предотвратить его переопределение. В С# методы по умолчанию не являются виртуальными, поэтому только переопределенные методы могут быть объявлены sealed (чтобы они не переопределялись)

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

Для классов классы С# sealed и классы Java final являются точно такими же (AFAIK).