Учебники

Groovy — Методы

Метод в Groovy определяется с типом возвращаемого значения или с ключевым словом def . Методы могут получить любое количество аргументов. Нет необходимости, чтобы типы были явно определены при определении аргументов. Модификаторы, такие как публичные, частные и защищенные могут быть добавлены. По умолчанию, если модификатор видимости не предоставлен, метод общедоступен.

Самый простой тип метода — метод без параметров, как показано ниже —

def methodName() { 
   //Method code 
}

Ниже приведен пример простого метода

class Example {
   static def DisplayName() {
      println("This is how methods work in groovy");
      println("This is an example of a simple method");
   } 
	
   static void main(String[] args) {
      DisplayName();
   } 
}

В приведенном выше примере DisplayName — это простой метод, который состоит из двух операторов println, которые используются для вывода некоторого текста на консоль. В нашем статическом методе main мы просто вызываем метод DisplayName. Результатом вышеупомянутого метода будет —

This is how methods work in groovy 
This is an example of a simple method

Параметры метода

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

Самый простой тип метода с параметрами, как показано ниже —

def methodName(parameter1, parameter2, parameter3) { 
   // Method code goes here 
}

Ниже приведен пример простого метода с параметрами

class Example {
   static void sum(int a,int b) {
      int c = a+b;
      println(c);
   }  
	
   static void main(String[] args) {
      sum(10,5);
   } 
}

В этом примере мы создаем метод sum с двумя параметрами, a и b . Оба параметра имеют тип int . Затем мы вызываем метод sum из нашего основного метода и передаем значения переменным a и b .

Результатом вышеприведенного метода будет значение 15.

Параметры по умолчанию

В Groovy также есть возможность указать значения по умолчанию для параметров в методах. Если в метод для параметров не передаются значения, используются значения по умолчанию. Если используются как параметры по умолчанию, так и параметры по умолчанию, то следует отметить, что параметры по умолчанию должны быть определены в конце списка параметров.

Ниже приведен пример простого метода с параметрами —

def someMethod(parameter1, parameter2 = 0, parameter3 = 0) { 
   // Method code goes here 
} 

Давайте посмотрим на тот же пример, который мы рассматривали ранее для добавления двух чисел, и создадим метод, который имеет один параметр по умолчанию и другой параметр не по умолчанию —

class Example { 
   static void sum(int a,int b = 5) { 
      int c = a+b; 
      println(c); 
   } 
	
   static void main(String[] args) {
      sum(6); 
   } 
}

В этом примере мы создаем метод суммы с двумя параметрами, a и b . Оба параметра имеют тип int. Разница между этим и предыдущим примерами заключается в том, что в этом случае мы задаем значение по умолчанию для b как 5. Поэтому, когда мы вызываем метод sum из нашего основного метода, у нас есть возможность просто передать одно значение, равное 6, и это будет назначено параметру a в методе sum .

Результатом вышеприведенного метода будет значение 11.

class Example {
   static void sum(int a,int b = 5) {
      int c = a+b;
      println(c);
   } 
	
   static void main(String[] args) {
      sum(6,6);
   } 
}

Мы также можем вызвать метод sum, передав 2 значения, в нашем примере выше мы передаем 2 значения 6. Второе значение 6 фактически заменит значение по умолчанию, назначенное параметру b .

Результатом вышеприведенного метода будет значение 12.

Возвращаемые значения метода

Методы также могут возвращать значения обратно вызывающей программе. Это требуется в современном языке программирования, где метод выполняет какие-то вычисления и затем возвращает требуемое значение вызывающему методу.

Ниже приведен пример простого метода с возвращаемым значением.

class Example {
   static int sum(int a,int b = 5) {
      int c = a+b;
      return c;
   } 
	
   static void main(String[] args) {
      println(sum(6));
   } 
}

В нашем примере выше обратите внимание, что на этот раз мы указываем тип возврата для нашего метода sum, который имеет тип int. В методе мы используем оператор return для отправки значения суммы в вызывающую основную программу. Поскольку значение метода теперь доступно для основного метода, мы используем функцию println для отображения значения в консоли.

Результатом вышеприведенного метода будет значение 11.

Методы экземпляра

Методы обычно реализуются внутри классов в Groovy, как и язык Java. Класс — это не что иное, как план или шаблон для создания различных объектов, который определяет его свойства и поведение. Объекты класса демонстрируют свойства и поведение, определенные его классом. Таким образом, поведение определяется созданием методов внутри класса.

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

Ниже приведен пример того, как методы могут быть реализованы.

class Example { 
   int x; 
	
   public int getX() { 
      return x; 
   } 
	
   public void setX(int pX) { 
      x = pX; 
   } 
	
   static void main(String[] args) { 
      Example ex = new Example(); 
      ex.setX(100); 
      println(ex.getX()); 
   } 
}

В нашем примере выше обратите внимание, что на этот раз мы не указываем статический атрибут для наших методов класса. В нашей основной функции мы фактически создаем экземпляр класса Example и затем вызываем метод объекта ex.

Результатом вышеупомянутого метода будет значение 100.

Локальные и внешние имена параметров

Groovy, как и Java, предоставляет возможность иметь локальные и глобальные параметры. В следующем примере lx является локальным параметром, который имеет область видимости только внутри функции getX (), а x является глобальным свойством, к которому можно получить доступ внутри всего класса Example. Если мы попытаемся получить доступ к переменной lx вне функции getX () , мы получим ошибку.

Live Demo

class Example { 
   static int x = 100; 
	
   public static int getX() { 
      int lx = 200; 
      println(lx); 
      return x; 
   } 
	
   static void main(String[] args) { 
      println(getX()); 
   }  
}

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

200 
100

этот метод для свойств

Как и в Java, groovy может получить доступ к своим членам экземпляра, используя ключевое слово this . В следующем примере показано, как, когда мы используем оператор this.x , он ссылается на его экземпляр и соответственно устанавливает значение x .

class Example { 
   int x = 100; 
	
   public int getX() { 
      this.x = 200; 
      return x; 
   } 
	
   static void main(String[] args) {
      Example ex = new Example(); 
      println(ex.getX());
   }
}

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