5 类、对象、方法

1       类、对象、方法

1.1  类

Groovy类,默认public。

下边的Groovy类,叫做Task.groovy

package com.vogella.groovy.first

 

class Task {

    String summary

    String description

    Date dueDate

}

1.2  对象 (POGO) and 成员变量(fields)

Groovy中的所有成员变量默认private。Groovy会自动创建getter和setter方法,为每个成员变量。如果你将该类注解或者对一个成员变量使用@Bindable进行注解,Groovy也会增加PropertyChangeSupport 到该类或者该成员变量。一个Groovy类适应java bean规范。

Groovy对象经常叫做Plain Old Groovy Objects (POGO)

l  访问成员变量的方法是:直接使用getter和setter方法,或者直接使用name。

l  Groovy也支持数组下标访问(object[property])。

l  即使你使用name方法访问,Groovy也会调用getter或setter方法。

l  如果一个成员变量不可改变如定义了final,此时Groovy不能提供setter方法。

1.3  构造方法

Groovy的构造方法中可以定义参数。这个构造方法也被叫做基于map的构造器,因为它使用property:value的map标记。

如果一个构造方法被使用了,Groovy首先调用默认的构造方法,然后调用这些成员变量的setter方法。

如果你在Groovy代码中调用了java类,该“带参数的构造方法”也能使用。

以下例子显示了带参数的构造方法。

package com.vogella.groovy.first

 

class Person {

    String firstName

    String lastName

    int age

    def address

    static void main(def args) {

       Person p = new Person()

       //使用自动生成的访问方法

       p.setFirstName("成员变量赋值1")

       //尽管我们直接调用name,但是,以下仍然使用自动生成的setter方法。

       p.lastName="成员变量赋值2"

       p.address=("北三环马甸东路")

       println(p.firstName+" "+p.lastName);

       //使用自动生成带参数的构造方法

       p = new Person(firstName:"构造方法赋值1",lastName:"构造方法赋值2");

       println(p.firstName+" "+p.lastName);

    }

}

输出

1.4  验证相等: == 和is()方法

l  对于==

验证值是否相等,而不是引用。

l  对于is()

验证引用是否相等,但是我验证 字符串值 时却相等。

在Groovy中,null==null返回true。如果两个引用地址指向同一个对象,则也是true。如果一个对象实现了compareTo 方法,Comparable被使用,可以使用equals 方法。

1.5  弱类型的方法中的参数与返回值

Groovy允许有弱类型的参数值。弱类型参数值默认为0.

package first

 

class Hello {

 

    static main(args) {

       println sum(1,5)

       println sum(1,2,5)

    }

    static sum(a,b,c=0) {

       a+b+c

    }

}

输出:

我发现,sum方法中没有返回值类型。尝试着加入int,String,结果输出跟没加返回值类型相同。又尝试着加入void,运行后,发现返回的是null。

1.6  方法中默认参数

In Groovy you assign default values to parameters in a method. If a default value for a parameter is defined, Groovy offers two method signatures: one with all parameters and one where the parameter with a default value is omitted. If you use multiple parameters with default values then the right most parameter with a default value is first eliminated then the next, etc.

Groovy会为一个方法中的参数分配一个默认值。

原文地址:https://www.cnblogs.com/yaoyuan2/p/5708955.html