4.2 Ключевое слово final

4.2 Ключевое слово final

Модификатор 'final' обращается к классам, методам и переменным. Значение final изменяется от контекста к контексту, но основная идея та же самая: Особенности final не могут быть изменены.

4.2.1 Класс final

Когда мы говорим, что полный класс final (предыдущее его определение с ключевым словом final), мы заявляем, что мы не хотим наследовать этого класса или позволять кому -либо еще так делать. Другими словами, по различным причинам интерфейс нашего класса такой, что нет никогда необходимости делать любые изменения, или для безопасности, или из соображений безопасности мы не хотим создавать подклассы. В перспективе, мы могли бы иметь дело с проблемой эффективности, и мы хотим удостовериться, что любая деятельность, связанная с объектами этого класса настолько эффективна насколько возможно.

Класс, объявленный, объявленный с модификатором 'final' не может иметь подклассов. Таким образом модификатор 'final' добавляется к классу, когда его спецификация заморожена.

Теперь мы увидим, как написать класс final:

Пример 3:
class Test{}
final class TestFinal {
int i = 7;
int j = 1;
Test x = new Test() ;
void f() {}
}
// class Further extends TestFinal {}
// error: Cannot extend final class 'TestFinal'
public class FinalDemo
{
public static void main(String[] args)
         {
TestFinal n = new TestFinal();
n.f();
n.i =40;
n. j++;
         }
}


Определение класса как final просто исключает наследование и ничего более. Однако, по причине предотвращения наследования, все методы в классе final неявно final, с этого момента нет способа отменить это.

4.2.2 Метод final

При создании класса final не всё удовлетворяет нашим потребностям, мы действительно хотим только защитить некоторые из методов нашего класса от того, чтобы быть отменёнными, мы можем использовать ключевое слово final в объявлении метода, чтобы указать компилятору, что метод не может быть отменен подклассами. Метод final реализуется точно однажды, в объявлении класса. Такой метод не может быть отменен: подклассы не могут заменить метод новым определением. Любые частные методы в классе неявно final. Поскольку мы не можем обратиться к частному методу, мы не можем отменить его (компилятор дает сообщение об ошибках). Если класс final, то все его методы неявно final, то есть гарантируется неотменяемость в любом подклассе.

4.2.3 Переменная final

Переменная final может быть установлена только однажды, разрешая нам объявить частые константы. Такую переменную можно оставить неназначенной в месте декларации, создавая blank finals (пустые переменные final). Но все переменные final должны быть назначены точно однажды. Эти переменные применяются главным образом в двух ситуациях: для предотвращения случайного изменения параметра метода, а также переменных, к которым обращаются анонимные классы.

Следующая программа показывает использованию модификатора final:
Пример 4:
class FinalDemo
{
public static void main(String args[])
         {
final int noChange = 20;
noChange =30;
System.out.println( Value of noChange = + noChange);
         }
}


Когда мы скомпилируем эту программу, мы получим следующее сообщение об ошибках

Рисунок 4.3: Вывод


назад к оглавлению вперед

Rus. Open Source company, г. Саратов
ул. Орджоникидзе, 156, офис 203
тел: 8 (8452) 57-84-41
e-mail: info@rus_opensource.com

Главная | Обзоры | О разном
Карта сайта

Учебная литература:

Введение в Linux
Основы JAVA
Архивы

© 2013 opensourcerules.net