JavaRush /Java блог /Random /Шпаргалка "Использование ключевого слова final"
Ирина
10 уровень

Шпаргалка "Использование ключевого слова final"

Статья из группы Random
В данной статье приведены основные способы применения ключевого слова final в программировании Java. Краткие четкие описания ситуации применения помогут быстро усвоить материал. Ключевое слово final имеет различные интерпретации в зависимости от того, в каком месте программы оно используется. Но суть этого слова одна — запрет на изменение. По сути, применяя данное слово к одной из сущности языка Java: переменной, объекту, методу или классу, — мы делаем из нее константу, стабильную и неизменяемую величину, как прическа у певца Иосифа Кобзона... Напомню краткое определение константы. Константа — постоянная величина (скалярная или векторная) в математике, физике, химии. Математическая константа — величина, значение которой не меняется; в этом она противоположна переменной. Рассмотрим 4 случая, когда мы можем применить слово final.

1. Создание константы примитивного типа данных.

Здесь значение MY_CONST нельзя изменить. Таким образом, если написать слово final возле примитивной переменной, то она является константой.

public class MyClass{ 
	public final int MY_CONST = 13;
}

2. Создание константы ссылочного типа.

Данный код не будет вызывать ошибки, но только до тех пор, пока не присвоить новое значение переменной s1. То есть слово final для ссылочных типов запрещает изменение ссылки, а не объекта, на который указывает ссылка. Также стоит отметить, что присваивание допустимо в любом месте программы, но только один раз.

public class MyClass2{ 
	public final String s1;   
	public MyClass2() { 
		s1 = new String();
	 } 
}

3. Запрет на переопределение метода в классе-наследнике

Слово final возле метода запрещает переопределение этого метода в классах-наследниках.

public class Example{
	public final void hello() { 
	System.out.println(“Hello my people!”); 
	} 
}
То есть, если создать класс-наследник от Example и написать в нем следующий код, то произойдет ошибка:

public class ExtendedExample extends Example{ 
	public void hello() { 
		System.out.println("Extended hello everyone!!!"); 
	} 
} 

4. Запрет создание класса наследника

Финальный класс — это класс, который не может быть суперклассом, то есть запрещается писать для него наследников.

public final class MyClass3 {

 }
Автор: Ирина Волгина
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Alukard Уровень 37 Expert
2 декабря 2020
hidden #2322530 Уровень 41
1 декабря 2020

public class Example{
	public final int hello() {
	System.out.println(“Hello my people!”);
	}
}
этот код даже не скомпилируется. возвращаемый тип без return нельзя использовать.
Stokly Уровень 23
1 декабря 2020
Классная и понятная статья, спасибо!