Модификатор final используется для определения констант. Методы, объявленные как final, нельзя замещать в подклассах.
Константа может быть объявлена как поле класса, но не проинициализирована. В этом случае она должна быть проинициализирована в логическом блоке или конструкторе. Значение по умолчанию константа получить не может в отличие от атрибутов с прочими модификаторами. Константы могут объявляться в методах как локальные или как параметры метода. В обоих случаях значения таких констант изменять нельзя.
Приложение на языке Java может вызывать методы, написанные на языке С++. Такие методы объявляются с ключевым словом native, которое сообщает компилятору, что метод реализован в другом месте. Например:
public native int outFunction(int num);
Методы, помеченные native, можно переопределять обычными методами в подклассах.
При использовании нескольких потоков необходимо синхронизировать методы, обращающиеся к общим данным. Когда интерпретатор обнаруживает synchronized, он включает код, блокирующий доступ к данным при запуске потока и снимающий блок при его завершении. Вызов методов notify(), notifyAll(), wait() класса Object (суперкласса для всех классов языка Java) предполагает использование модификатора synchronized, так как эти методы предназначены для работы с потоками.