Модификаторы static и final в языке Java

Модификаторы static и final в языке JavaМодификаторы final и static очень важны в ООП. Ведь с помощью модификатора final вы сможете создать константу, а с помощью модификатора static можно обращаться к членам класса без создания экземпляра класса.
Рассмотрим для примера класс MyMath, который будет содержать арифметические функции:

public class MyMath {
public static int Add(int x, int y) {
return x + y;
}
public int Multiply(int x, int y) {
return x * y;
}
}

Функция Add у нас статичная, а функция Multiply нет:

int ans = MyMath.Add(x, y);//
ans = MyMath.Multiply(x, y);//

С другой стороны при создании объекта класса MyMath вы сможете пользоваться обеими функциями:

MyMath math = new MyMath();
int ans = math.Multiply(2,3);
ans = math.Add(2,3);

Конечно, обычно к статическим методам обращаются через название класса, а не через объект.
Теперь рассмотрим работу с статическими полями класса. Пусть у нас есть некоторая точка:

public class MyPoint {
public static int x;
public int y;
}

Тогда мы сможем изменять значение переменной x, не создавая объекта класса, при этом данное значение одно для всех, то есть любые изменения статического поля x будут видны во всех объектах класса, убедимся в этом на примере:

MyPoint point1 = new MyPoint();
MyPoint point2 = new MyPoint();
MyPoint.x = 1;
System.out.println(MyPoint.x);//1
System.out.println(point1.x);//1
System.out.println(point2.x);//1
point1.x = 2;
System.out.println(MyPoint.x);//2
System.out.println(point1.x);//2
System.out.println(point2.x);//2

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

public class MyMath {
public static int Add(int x, int y) {
return Multiply(x, y);//     
}
public int Multiply(int x, int y) {
return x * y;
}
}

Любое поле в Java можно сделать константой с помощью ключевого слова final:

final int x = 0;
x = 1;//
final int y;
y = 2;
y = 1;//

Как видно из примера, значение переменной с модификатором final можно присвоить только 1 раз.
Модификатор final еще используется для того, чтобы запретить переопределения метода в классах наследниках. Если указать final перед классом, то вы запретите наследование от него.

Один комментарий на “Модификаторы static и final в языке Java

  1. Хорошая статья. Модификаторы- это очень важное и неотъемлемое понятие в ООП. Представляю вам свои труды: Java. Модификаторы– статья, в которой я подробно рассмотрел другие модификаторы в Java.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *