Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

В чем отличие статических от динамических методов в Джаве?

ТехнологииПрограммирование+1
Андрей Андреев
  ·   · 5,7 K
Пользователь старого TheQuestion  · 15 дек 2015

Особенности того, что вы подразумевали, плюс в квадратных скобках официальное название в соответствии с глоссарием от Oracle:

Когда вы разрабатываете класс (прототип объекта), все поля и методы без модификатора static описывают конкретное свойство каждого объекта - например, скорость движения конкретного автомобиля veh1 класса Vehicle. В этом классе может быть метод getSpeedKMph(), возвращающий скорость этого автомобился в км/ч.

  • [method / instance method] метод объекта

Если он не отмечен модификатором static, то в коде метода есть доступ к текущему объекту с помощью ключевого слова "this". Скорость считаем на основе значения из this. Получаем результат с помощью выражения "int kmph = veh1.getSpeedKMph()".

  • [static method / class method] статический метод

Если же сделать метод статическим с помощью модификатора static, то он будет находится не в контектсе объектов veh1, veh2 и т.д., а только в самом типе Vehicle. Его вызов будет возможен через Vehicle.getSpeedKMph(). При этом доступа к конкретному объекту через "this" в нем естественно не будет, так как он не упоминается при вызове метода. Для того что бы переделать метод на статический придется добавить аргумент для вызова этого метода (Vehicle veh) и заменить слова "this" внутри кода на, собственно, veh. И вызывать с помощью конструкции: "int kpmh = Vehicle.getSpeedKMph(veh)".

Кандидат филологических наук, научный сотрудник...  · 13 дек 2015
Статические методы принадлежат классам, а динамические — конкретным объектам на их основе. Например, если у вас есть класс Градусник, вы можете сделать в нем статический метод, который будет пересчитывать температуру из... Читать далее