Когда использовать статические методы? [закрывшая]

я начинаюсь в этом программирования и он у меня не остается очень ясным, когда использовать статические методы, вы могли бы помещать мне какие-то примеры, где было бы лучше использовать статический метод, что нормальный метод? Из-за небольшого количества, которое я знаю, статические методы мне кажутся более удобными, так как не нужно создавать объект, чтобы называть их

1
задан 19.04.2017, 05:24
3 ответа

Я предполагаю, что ты используешь Java. Метод статические класса в Java:

  • Они загружаются в памяти во времени компиляции и не по мере того, как работают линии кода программы. Они предшествовались модификатора static.

Пример:

public static void contadorUniversal (){
    numContadorUniversasl++;
}

Чтобы призывать в статический метод не нужно создавать объект класса, в котором он определяется.

  • Если он призывается с класса, в котором он является определенным, достаточно писать Ваше имя.
  • Если он призывается с отличного класса, будь должен вставать впереди Вашего имени, имени класса, в котором является следуемой оператором точка (.) .metodoEstatico

Они обычно используются, чтобы реализовывать общие операции во все объекты класса. Они не касаются состояний тех же самых (в стоимость Ваших переменных инстанции).

Пример, если требуется метод, чтобы облагать налогом число созданных объектов класса, имеет смысл, что он был статическим, так как Ваша функция (увеличивать стоимость целой переменной) осуществилась бы независимо от объекта, использованного, чтобы призывать его. Пример contadorUniversal

Не годится использовать много статических методов, итак, хотя увеличивается скорость выполнения, теряется гибкость, не делает себе эффективное использование памяти и не занимается согласно началам Программирования, Ориентируемого на Объекты.

0
ответ дан 24.11.2019, 12:02

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

оставил тебе примеры: книжный магазин Math, очень использованные, он не нуждается в том, чтобы создать объект Math, возможно использовать импортируя это и прямо ссылаться на Ваши методы, хотя также возможно использовать другой формы, создавая объект Math и призывать в Ваши методы. сделай доказательство:

переместил 1: имеет значение книжный магазин Math

я перемещаю 2.1: например используй Ваш метод Math.sqrt(2);// solo invocas la clase y usas el metodo или

переместил 2.2:

Math m=new Math();
m.sqrt(2);

Добавляя информацию:

Размещенное слово static использован, чтобы создавать такие постоянные величины: public static конец constante=1;

, когда создавать переменную с размещенным словом static поддерживает Вашу стоимость названной вслед за названный, например, когда у тебя есть изменчивая счетчик, у которого есть стоимость 10, и ты освежаешь твою панель (только это пример) эта переменная поддерживает Вашу стоимость, , если ты это называешь с другого класса, поддержит Вашу стоимость, возможно считать как глобальная переменная всего твоего приложения.

0
ответ дан 24.11.2019, 12:02
  • 1
    Ошибка, static - это, чтобы создавать постоянные величины, стоимость переменной с static может меняться, тот постоянной величины не. – nikomaster 19.04.2017, 05:35

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

Например, переменные firstname, lastname - частные лица инстанции, однако переменная списки (array с возможными списками) была бы глобального использования, взамен изменчивая список, если оно - частное лицо инстанции, так как он представил бы список, который есть у пользователя.

Sorry, я немного сложный, чтобы объяснять.

Если ты используешь PHP, пример был бы

<?php

class User{

  public static $roles = ['admin', 'user', 'teacher'];
  protected $rol;
  protected $firstname;
  protected $lastname;

  public static function roles(){
    return self::$roles;
  }

  public static function rolesNotAdmin(){
    $roles = self::roles();
    unset($roles[0]);

    return $roles;
  }

  ...
}

чтобы это называть внутри того же класса / инстанции ты можешь использовать размещенное слово self, следуемый двумя точками и имя функции или переменной: self:: списки () или self:: $roles.

Когда ты нуждаешься в том, чтобы назвать их снаружи инстанции, одинокий ты должен называть класс, следуемый двумя точками и имя функции или переменной User:: списки ():

<?php

$roles = User::roles(); 
$rolesWithoutAdmin = User::rolesNotAdmin(); 
$roles = User::$roles; // la variable es accesible por que la dejamos publica ;)

Я надеюсь, что он ты полезный.

0
ответ дан 24.11.2019, 12:02