Groovy 类例子
1、class Toy{
def toyName //会在java代码中声明为私有的,并提供set和get
def unitPrice
def method(){ //此方法在生成的java代码中返回object
println 'Invoke method!'
}
String toString(){"${toyName}"}
}
- def toy = new Toy(toyName:'toy1',unitPrice:'100') //自动回对应属性赋值
- println "Toy ${toy.toyName},unit price :${toy.unitPrice}"
- toy.method()
- prinltn toy //会调用toString方法
2、Groovy类分析
- 类和方法默认是public的
- 类属性是私有的
- 变量与方法使用动态属性
- Groovy 自动提供构造函数、构造函数接受一个名-值对的映射,名称-值对与类的属性相对应。不用初始化对象的每个属性
- 生成标准的setter和getter方法
- 可以通过 . 语法间接地访问属性
- 在进行属性操作时总是会调用setter和getter方法,即使直接通过 . 语法访问属性也是如此
- 打印对象,在java中这样只会输出所有对象默认的toString()实现, 包.类名@hashcode
- 覆盖默认的toString()实现,让输出效果更好
- String toString(){"${toyName}"}
继承
1、使用Java的继承机制。
2、支持方法覆盖于重载即多态。
class Father{
def name
String toString(){name}
}
class Son extends Father{
def score
String toString(){super.toString()+"."+score}
}
- def f =new Father(name:'clat')
- println f // clat
- def s = new Son(name:'escaflone', score:'100')
- println s // escaflone:100
抽象类与接口
1、Groovy 动态类型的特征,实际上使抽象类与接口变得不是很必要了
2、抽象类提供应该由子类延迟实现的方法即抽象方法。
3、abstract class AbstractClassDemo
{
def abstract doSomething()
//抽象类也可以包含具体的方法
String toString(){println 'Abstract class'}
}
class AbstractClassSon extends AbstractClassDemo{
def doSomething(){}
}
4、接口作为 子类必须遵守的协议,要求子类必须实现所有的方法,使用Java相同的机制
interface iToyService{
def addToy()
def deleteToy()
def updateToy()
def selectToy()
}
class ToyServiceimpl implements iToyService{
def addToy(){}
def deleteToy(){}
def updateToy(){}
def selectToy(){}
}