Финал буквально означает «последний, финал». Это значение также выражено на Java.
Окончательный может использоваться для изменения переменных (включая атрибуты класса, атрибуты объекта, локальные переменные и формальные параметры), методы (включая методы класса и методы объекта) и классы.
1. Окончательный класс модификации:
Окончательный класс модификации означает, что этот класс уже имел «последнее, окончательное» значение. Следовательно, классы, модифицированные с финалом, не могут быть унаследованы, то есть у них не может быть собственных подклассов.
Если представление наследует класс, который был изменен с помощью окончательного, может возникнуть ошибка во время компиляции.
2. Окончательный метод модификации:
Окончательный метод модификации означает, что этот метод уже имеет значение «последнего, окончательного» значения, то есть этот метод не может быть переписан (можно перегрузить несколько окончательных методов модификации).
Здесь следует отметить, что, поскольку предпосылка для перезаписи заключается в том, что подкласс может унаследовать этот метод от родительского класса, если окончательный измененный метод в родительском классе также имеет разрешения управления доступом частно,
Этот метод не может быть унаследован непосредственно от подкласса. Следовательно, то же имя и параметры метода могут быть определены в подклассе в настоящее время. В настоящее время не будет никакого противоречия между переписыванием и окончательным.
Новые методы были пересмотрены на подклассах.
Общедоступный класс B расширяет {public static void main (string [] args) {} public void getName () {}} класс a { /*** Из -за частной модификации этот метод не может быть унаследован в подклассе. Следовательно, метод GetName в подклассе переопределен, * принадлежит к самому подклассу, а компиляция является нормальной */private final void getName () {}/ * Из -за модификации pblic, подкласс может унаследовать этот метод, что приводит к перезаписыванию окончательного метода и погрешности композиции.3. Окончательная переменная модификатора:
Окончательная модифицированная переменная означает, что эта переменная имеет значение «последнего, окончательного» значения. Как только конечная переменная определена и инициализирована в первый раз, окончательное измененное значение переменной не может быть изменено.
Вот некоторые проблемы, которые следует отметить:
1. Окончательные модифицированные переменные, будь то атрибуты класса, атрибуты объекта, формальные параметры или локальные переменные, эти переменные должны отображаться инициализированы (то есть укажите начальное значение для их отображения).
Для формальных параметров, измененных в финале, это легко понять, поскольку они передаются фактическими параметрами.
Для локальных переменных, модифицированных окончательными, так же, как переменные, которые не изменяются в конечном итоге, им необходимо отображать инициализацию. То есть локальные переменные должны отображаться инициализированы.
Для общих атрибутов класса и атрибутов объекта можно увидеть из процесса инициализации класса и объекта, что инициализация по умолчанию сначала выполняется. Затем переменные с отображаемыми назначениями снова инициализируются.
Однако для атрибутов класса и атрибутов объекта, измененных в соответствии с окончательной, если инициализация не отображается, значение по умолчанию будет значением инициализации по умолчанию, которое противоречит отправной точке самой окончательной. Следовательно, синтаксис Java предусматривает:
Атрибуты класса и атрибуты переменных, измененные с помощью окончания, должны отображаться и инициализированы.
Кроме того, будь то для основных типов данных или ссылочных типов данных, окончательные модифицированные переменные отображаются впервые и не могут быть изменены после инициализации. Это легко понять для основных типов данных. Для справки
Для типа данных ссылочная переменная указывает на фактический объект, но он хранит адрес объекта, на который указан. Следовательно, его значение не может быть изменено, не означает, что указанный объект не может быть изменен.
4.
В Java макроэнергии/замена макроса относится к тому факту, что в коде Java некоторые переменные могут быть непосредственно заменены их собственными значениями в течение периода компиляции и скомпилированы в файл .class. Следовательно, это изменение больше не существует в скомпилированном файле .class.
В переменных типа строки иногда часто встречаются следующие ситуации:
Общественный класс тест {public static void main (string [] args) {String country = "Китай"; String name = "qqyumidi"; String userInfo = country + name; // после компиляции переменные страны и имени все еще здесь, String user = "China" + "qqyumidi"; // после компиляции он становится напрямую grainqqyumidi}}}}}}}}}}}В строке 9 вышеуказанного кода скомпилированным результатом переменной является непосредственно Chinaqqyumidi. В строке 8, поскольку страна и имя являются обычными переменными, компилятор не может напрямую определить значение пользователя Infor во время компиляции, поэтому
Результатом после компиляции здесь не является непосредственно ChinkQQYUMIDI.
Однако, если вы хотите, чтобы код в строке 8 был представлен непосредственно в качестве Chinaqqyumidi в течение периода компиляции, вам необходимо использовать окончательный модификатор для изменения страны и переменных имен.
Причина: переменная, модифицированная конечным модификатором, может напрямую определять его значение в течение периода компиляции из -за его собственных характеристик, и это значение не имеет значения. Во время процесса компиляции его переменные могут быть непосредственно преобразованы в их значения для представления.
Общественный тест класса {public static void main (string [] args) {final String country = "Китай"; окончательная строка name = "qqyumidi"; String userInfo = country + name; // после компиляции это напрямую chianqqyumidi}}}}}}}}}}Выше приведено полное содержание точек знаний о последнем модификаторе Java (статья обязательно прочитать), которые редактор приносит вам. Я надеюсь, что это будет полезно для вас и поддержать wulin.com больше ~