📜  Groovy-方法

📅  最后修改于: 2020-11-04 06:37:24             🧑  作者: Mango


Groovy中的方法是使用返回类型或def关键字定义的。方法可以接收任意数量的参数。定义参数时,不必显式定义类型。可以添加诸如public,private和protected的修饰符。默认情况下,如果未提供可见性修饰符,则该方法为public。

方法的最简单类型是不带参数的一种,如下所示:

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);
   } 
}

在此示例中,我们将创建一个具有2个参数ab的sum方法。这两个参数均为int类型。然后,我们从main方法中调用sum方法,并将值传递给变量ab

上述方法的输出将是值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); 
   } 
}

在此示例中,我们将创建一个具有两个参数ab的sum方法。这两个参数均为int类型。此示例与上一个示例之间的区别在于,在这种情况下,我们将b的默认值指定为5。因此,当从main方法调用sum方法时,我们可以选择只传递一个值为6的值,它将在sum方法中分配给参数a

上述方法的输出将是值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);
   } 
}

我们还可以通过传递2个值来调用sum方法,在上面的示例中,我们传递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语句将总和值发送到调用主程序。由于该方法的值现在可用于main方法,因此我们正在使用println函数在控制台中显示该值。

上述方法的输出将是值11。

实例方法

方法通常像Java语言一样在Groovy中的类内部实现。一个类不过是一个蓝图或用于创建定义其属性和行为的不同对象的模板。类对象展示了由其类定义的属性和行为。因此,通过在类内部创建方法来定义行为。

在下一章中,我们将更详细地介绍类,但以下是在类中实现方法的示例。在前面的示例中,我们将方法定义为静态方法,这意味着我们可以直接从类中访问这些方法。方法的下一个示例是实例方法,其中通过创建类的对象来访问方法。我们将在下一章再次看到类,现在我们将演示如何使用方法。

以下是如何实现方法的示例。

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类内部进行访问。如果尝试在getX()函数外部访问变量lx ,则会收到错误消息。

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的结果。