Groovy (方法)

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

package com.klvchen.test1

class MethodTest {
	
	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();
	}
	
}

方法参数

如果一个方法的行为由一个或多个参数的值确定,则它通常是有用的。我们可以使用方法参数将值传递给被调用的方法。请注意,参数名称必须彼此不同。

package com.klvchen.test1

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

默认参数

Groovy 中还有一个规定来指定方法中的参数的默认值。 如果没有值传递给参数的方法,则使用缺省值。 如果使用非默认和默认参数,则必须注意,默认参数应在参数列表的末尾定义。

package com.klvchen.test1

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

方法返回值

方法也可以将值返回到调用程序。 这在现在编程语言中是必需的,其中方法执行某种计算,然后将所需值返回到调用方法。

package com.klvchen.test1

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

实例方法

package com.klvchen.test1

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

本地和外部参数名称

Groovy 提供的设施就像java一样具有本地和全局参数。在下面的示例中,lx 是一个局部参数,它只具有 getX() 函数内的作用域,x 是一个全局属性,可以在整个 Example 类中访问。如果我们尝试访问 getX() 函数之外的变量 lx,我们将得到一个错误。

package com.klvchen.test1

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

方法属性

就像在 Java 中一样,groovy 可以使用 this 关键字访问它的实例成员。以下示例显示了当我们使用语句 this.x 时,它引用其实例并相应地设置x的值。

package com.klvchen.test1

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

posted @ 2021-03-04 11:25  klvchen  阅读(215)  评论(0编辑  收藏  举报