1. Окончательная модификация
Классы, модифицированные Final, не могут быть унаследованы, поэтому методы окончательного класса не могут быть перезаписаны, а классы, измененные по окончательным ключевым словам, не имеют подклассов, поэтому данные реализации класса не могут быть изменены и не могут быть расширены. Все методы участников в последнем классе будут неявно указаны в виде окончательных методов, а переменные элемента в конечном классе могут быть установлены на окончательное при необходимости.
2. Окончательный метод модификации
Если метод в классе изменен по конечным ключевым словам, его подкласс не может перезаписать метод и может быть унаследован только подклассом. Если метод в родительском классе не хочет быть перезаписанным его подклассом, метод может быть определен как конечный тип. Кроме того, частный метод в родительском классе (т. Е. Метод, модифицированный частным ключевым словом), не разрешается перезаписан подклассом. Следовательно, метод, модифицированный частным ключевым словом в родительском классе, является по умолчанию к окончательному типу. Метод, модифицированный конечным ключевым словом, имеет следующие характеристики:
Этот метод заблокирован, не позволяя любому классу наследования изменять его значение и реализацию;
Эффективный. Когда компилятор встречается на вызове окончательного метода, он войдет в встроенный механизм, значительно повышая эффективность выполнения;
Кроме того, статические методы, которые используют окончательную модификацию, не могут быть скрыты в подклассах своего класса, к которому они принадлежат;
3. Окончательные переменные модификации
Значение финала ключевого слова «это незаменимо» или «окончательное состояние»;
Так зачем останавливать изменения?
Изобретатель языка Java может предотвратить изменения из -за двух целей:
A. Проблемы с эффективностью:
Некоторые методы определенных классов в JDK не разрешаются перезаписаны пользователями. Дизайнер может подумать, что используемый метод является лучшим методом.
Если пользователь покрывает его в частном порядке или охватывает его из -за халатности, это повлияет на системные возможности JVM или системы;
B. Требования к проектированию:
Как мы все знаем, некоторые случаи должны использовать окончательные ключевые слова, такие как передача параметров анонимных внутренних классов в методе.
Некоторые люди говорят, что окончательные переменные неизменны после назначения.
Так что именно означает этот без инвалидов?
Этот инвариант относится к ссылке, адресу, а содержание ссылочного объекта все еще является изменчивым.
То есть эта конечная переменная всегда указывает на объект, является постоянным указателем, а не указателем на константу.
(1) Основной тип данных, измененный конечным ключевым словом, не может быть изменен после того, как он инициализирован;
(2) Если это переменная эталонного типа, ее нельзя разрешить указывать на другой объект после его инициализации, но содержимое объекта, на которое указано ссылкой, может измениться. Причина в том, что адрес справочного объекта, хранящегося в памяти кучи типа эталонного типа. После окончательного модификации типа ссылки, пространство памяти кучи, на которое указано ссылка (или адрес памяти кучи, хранящийся в ссылке), не может быть изменено.
При использовании окончательного для изменения нестатической переменной элемента класса есть два способа инициализации переменных элементов:
(3) Инициализировать во время объявления (4) инициализируйте при объявлении переменной. Переменная называется пустой окончательной, то есть окончательным пустым, но начальное значение должно быть назначено этой переменной во всех конструкторах класса, где находится переменная.
При использовании окончательного для изменения статической переменной элемента класса есть два способа инициализации статической переменной элемента:
(5) Инициализируйте при объявлении (6) инициализировать в блоке статической инициализации При окончательном изменении статических переменных интерфейса есть только один способ инициализации:
(7) Инициализируйте при объявлении. При использовании окончательного для изменения локальных переменных членов вам необходимо только убедиться, что назначение инициализировано перед использованием.
Короче говоря, переменные, модифицированные конечным ключевым словом, не могут быть инициализированы при объявлении, но необходимо обеспечить, чтобы переменная была инициализирована перед использованием. После инициализации и назначения его нельзя перенаправить. Попробуйте проанализировать результаты вывода программы:
открытый класс тест {public static void main (string [] args) {string a = "hello2"; окончательная строка b = "hello"; Строка D = "Привет"; Строка C = B + 2; Строка e = d + 2; System.out.println ((a == c)); System.out.println ((a == e)); }} 4. Окончательные параметры модификации
Когда параметр метода является конечным типом, вы можете прочитать и использовать этот параметр, но вы не можете изменить значение параметра. Эта переменная создается, когда метод вызывается и инициализируется к соответствующему значению параметра. Его значение не может быть изменено до выполнения тела метода. Значение параметра базового типа данных, модифицированного с помощью конечного ключевого слова, не может быть изменено. Справочный тип данных, измененный с помощью окончательного ключевого слова, не может быть ссылкой, указывающей на другой объект или снова присвоение значению NULL, но содержимое эталонного объекта может быть изменено с помощью этой ссылки. Цель окончательной модификации параметров состоит не в том, чтобы не допустить, чтобы операция параметра изменила значение соответствующей переменной вне метода в рамках вызываемого метода, а для предотвращения операции переназначения параметра в методе, влияя на начальное значение при передаче параметра. Кроме того, изменение параметров в методе с помощью конечного ключевого слова не может предотвратить содержание значения параметра, передаваемого извне метода, метода. Для получения подробной информации, пожалуйста, обратитесь к объяснению окончательного типа ссылки на модификацию.