Разница между статическим и финальным в Java

Автор: Laura McKinney
Дата создания: 2 Апрель 2021
Дата обновления: 10 Май 2024
Anonim
Java Абстрактный класс VS Интерфейс
Видео: Java Абстрактный класс VS Интерфейс

Содержание


Static и final оба являются ключевыми словами, используемыми в Java. Доступ к статическому члену можно получить до создания объекта класса. Финал имеет другой эффект применительно к классу, методам и переменным. Основное различие между статическим и последним ключевым словом заключается в том, что статический Ключевое слово is используется для определения члена класса, который может использоваться независимо от любого объекта этого класса. окончательный ключевое слово используется для объявления постоянной переменной, метода, который нельзя переопределить, и класса, который не может быть унаследован.

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. Вывод

Сравнительная таблица

Основа для сравнениястатическийокончательный
применимыйКлючевое слово Static применимо к вложенному статическому классу, переменным, методам и блоку.Последнее ключевое слово применимо к классу, методам и переменным.
инициализацияНе обязательно инициализировать статическую переменную во время ее объявления.Обязательно инициализировать окончательную переменную во время ее объявления.
модификацияСтатическая переменная может быть переинициализирована.Последняя переменная не может быть повторно инициализирована.
методыСтатические методы могут обращаться только к статическим членам класса и могут вызываться только другими статическими методами.Окончательные методы не могут быть унаследованы.
Учебный классСтатический объект класса не может быть создан, и он содержит только статические элементы.Конечный класс не может быть унаследован ни одним классом.
блокСтатический блок используется для инициализации статических переменных.Финальное ключевое слово не поддерживает такой блок.


Определение статики

Static - это ключевое слово, применимое к классам, переменным, методам и блокам. Члены класса, класс и блоки могут быть сделаны статическими, используя ключевое слово «static» перед именем членов класса, класса и блоков соответственно. Когда член класса объявляется как статический, он становится глобальным для всех остальных членов класса. Статический член класса не занимает память для каждого экземпляра, т. Е. Все объекты совместно используют одну и ту же копию статического члена. Статический член может использоваться независимо от любого объекта этого класса. Вы можете получить доступ к статическому члену класса перед созданием его объекта. Наилучшим примером статического члена является метод main (), он объявлен как статический, чтобы его можно было вызывать до того, как какой-либо объект существует. Общая форма для доступа к статическому члену класса:

class_name.static_member // доступ к статическому члену класса

В приведенном выше коде class_name - это имя класса, в котором определен static_member. Статический член может быть статической переменной или статическим методом.


Статические переменные:

  • Статическая переменная действует как глобальная переменная для всех остальных членов класса.
  • Статическая переменная может быть доступна до того, как какой-либо объект класса существует.
  • Статическая переменная может быть доступна с именем класса, в котором она определена, за которой следует оператор точки (.).

Статические методы:

  • Статический метод может вызывать только другие статические методы.
  • Статический метод может получить доступ только к статическим данным.
  • Статический метод нельзя называть «этим» или «супер» ни при каких условиях.
  • Доступ к статическому методу можно получить по имени класса, в котором он определен, за которым следует оператор точки (.).

Статический класс:

  • У Java действительно есть понятие вложенного статического класса. Внешний класс нельзя сделать статическим, тогда как самый внутренний класс можно сделать статическим.
  • Статический вложенный класс не может получить доступ к нестатическому члену внешнего класса.
  • Он может получить доступ только к статическим членам внешнего класса.

Статический блок:

Статический блок выполняется только один раз, когда класс загружается. Используется для инициализации статических переменных класса.

C ++:

В C ++ у нас есть понятие статических переменных, а также статических функций, тогда как C ++ не поддерживает статический класс.

C #:

C # также поддерживает статический класс, статические переменные и статический класс.

Джава:

Java поддерживает статический вложенный класс, статические переменные, статические методы.

Определение финала

Final - это ключевое слово, применимое к классу, переменной и методам. Класс, переменная и метод объявляются как final, используя ключевое слово «final», которому предшествует их имя. Как только переменная объявлена ​​как final; это не может быть изменено в дальнейшем в программе. Последняя переменная должна быть инициализирована во время объявления. Конечные переменные не занимают память для каждого отдельного экземпляра. Все объекты классов имеют одну и ту же копию конечной переменной.

Метод, объявленный как final, не может быть переопределен подклассом того класса, в котором объявлен final метод. Когда класс объявлен как последний, другой класс не может наследовать этот последний класс. C ++, C # не поддерживают концепцию if final. Java поддерживает концепцию конечного ключевого слова и в Java; Класс, переменная и метод могут быть объявлены как окончательные.

  1. Ключевое слово static применимо к вложенному статическому классу, переменным, методам и блокам. С другой стороны, ключевое слово final применимо к методам и переменным класса.
  2. Статическая переменная может быть инициализирована в любое время, тогда как конечная переменная должна быть инициализирована во время объявления.
  3. Статическая переменная может быть повторно инициализирована, тогда как после инициализации конечная переменная никогда не может быть повторно инициализирована.
  4. Статический метод может получить доступ к статическому члену класса и может быть вызван только другими статическими методами. С другой стороны, последний метод никогда не может быть унаследован ни одним классом.
  5. Статический блок используется для инициализации статических переменных, тогда как ключевое слово final не поддерживает ни одного блока.

Вывод:

Как статическое, так и конечное ключевое слово имеют различное назначение при применении к классу, переменной и методу.