groovy类、构造函数、方法

数据类型:groovy支持Java语言规范定义的数据类型
类:与Java类的主要区别
1、没有可见修饰符的类或者方法是自动公开的
2、类不需要与源文件定义相同名称,但是默认规定定义一样
3、一个源文件包含一个或者多个类,但是如果文件包含不再类中的任何代码将视为脚本
4、脚本只是具有一些特殊约定的类
5、不要在脚本中定义与脚本源文件相同名称的类定义
6、必须用abstract关键字修饰抽象方法和类
7、可以使用as运算符使对象的实例在运行时实现接口

/**
 * Created by Jxy on 2018/12/21 7:43
 * 三种构造函数的使用
 * Groovy方法、参数
 */
class PersonConstructor {
    String name
    Integer age

    PersonConstructor(name, age) {
        this.name = name
        this.age = age
    }
}

def person1 = new PersonConstructor('Marie', 1)
def person2 = ['Marie', 2] as PersonConstructor
PersonConstructor person3 = ['Marie', 3]
/*
方法基本的定义
 */
def someMethod() { 'method called' }//声明没有返回值类型并且没有参数的方法
String anotherMethod() { 'another method called' }//具有显式返回类型且无参数的方法
def thirdMethod(param1) { "$param1 passed" }//没有定义类型的参数的方法
static String fourthMethod(String param1) { "$param1 passed" }//带String参数的静态方法
/*
方法的命名参数
 */
def foo(Map args) { "${args.name}: ${args.age}" }
def string = foo(name: 'Marie', age: 1)
println(string)//Marie: 1
/*
方法参数混合命名和位置参数
Mixing named and positional parameters
map必须放在参数第一个位置不然会报异常:groovy.lang.MissingMethodException
 */
def foo(Map args, Integer number) { "${args.name}: ${args.age}, and the number is ${number}" }
foo(name: 'Marie', age: 1, 23)
foo(23, name: 'Marie', age: 1)

/*
如果map没有在第一个参数位置则应该使用显示map参数替换命名参数
 */
def foo(Integer number, Map args) { "${args.name}: ${args.age}, and the number is ${number}" }
foo(23, [name: 'Marie', age: 1])

/*
默认参数
 */
def foo(String par1, Integer par2 = 1) { [name: par1, age: par2] }
assert foo('Marie').age == 1
/*
可变参数
可变参数与重载
 */
def foo(Object... args) { 1 }
def foo(Object x) { 2 }
assert foo() == 1
assert foo(1) == 2
assert foo(1, 2) == 1

 

转载于:https://www.cnblogs.com/jsersudo/p/10154726.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值