欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Groovy面向对象四

程序员文章站 2022-07-03 15:22:34
...

字段

        字段是类或者特征的成员带有一个强制的访问修饰符(public、protected、private)、一个或多个可选修饰符(static、final、synchronized)、一个可选的类型和一个强制的名称。字段可以在声明时直接初始化。可以省略字段的类型,但是不推荐这样做。在使用可选的类型检查时是很重要的。但是在脚本中或者使用动态类型时可以省略类型。

属性

    属性是类外部可见的特性,属性没有访问修饰符、一个或多个可选修饰符(static、final、synchronized)、一个可选的类型和一个强制的名称。Groovy会为属性生成合适的getter/setter方法。如果属性声明为final的,那么就不会为其生成setter方法。通过属性名访问属性会隐式的调用getter/setter方法。可以通过类实例的元字段properties获得所有的属性。即使没有定义字段,但是提供了遵循JavaBean规范的getter/setter方法,Groovy也可以识别属性。
//field
class Data {
    private int id                                  
    protected String description                    
    public static final boolean DEBUG = false       
}

class Data {
    private String id = IDGenerator.next() 
    // ...
}
//properties
class Person {
    String name
    void name(String name) {
        this.name = "Wonder$name"       
    }
    String wonder() {
        this.name                       
    }
}
def p = new Person()
p.name = 'Marge'                        
assert p.name == 'Marge'                
p.name('Marge')                         
assert p.wonder() == 'WonderMarge'

class Person {
    String name
    int age
}
def p = new Person()
assert p.properties.keySet().containsAll(['name','age'])

class PseudoProperties {
    // a pseudo property "name"
    void setName(String name) {}
    String getName() {}

    // a pseudo read-only property "age"
    int getAge() { 42 }

相关标签: 字段 属性