关于脚本语言有一些普遍的错误认识,因为一个脚本语言也许支持宽松的类型和提供一些令人惊讶的语法,对于计算机迷来说感觉就像一个玩具,而不是适用于面向对象编程的语言。
这个声誉来源于早期的 shell 脚本或者是 Perl,它们缺少别的 OO 特性,有时导致粗放 的代码管理,频繁的代码复制和难以发现的隐藏 bug,没有相应的语言帮助以让后来人员看明白。
随着时间的过去,脚本语言已经发生了戏剧性的变化,Perl 已经增加了对面向对象的支持,Python 也扩充了面向对象的支持,并且近来的 Ruby(与 java 和 C++相比,有重大的生产力的提升)也是一个完全的动态面向对象脚本语言。
Groovy 密切跟踪 Ruby 提供的动态面向对象特性,不但增强了 java 的脚本能力,而且也提供了新的 OO 特性,你已经看到了 groovy 在 java 使用非对象的专有类型的地方提供了引用类型,引入了范围和闭包,并且为对象的集合增加了许多简化符号,但这些增强仅仅表面现象,如果这就是 groovy 的全部,它将与 java 上的其他语法糖没有区别,groovy 的立足点是它的一组动态特性。
在这章中,我们将从熟悉的类、对象、构造方法、引用等等开始,偶尔有一点不同,但在这章结束的时候,我们将到达一个新的领域,在运行时改变对象的能力、拦截方法调用、非常非常多,欢迎来到 groovy 的世界。