第三章 gradle自动化构建系列文章 之 Groovy面向对象

第三章 gradle自动化构建系列文章 之 Groovy面向对象

< center>

查看 “Android自动化构建系列” 全部文章

  • groovy中的类,接口的定义和使用
  • groovy中的元编程
groovy中的类的特点:
class Animal {
    String name
    Integer age
}


//赋值: 在groovy中我们不需要写对应的get set方法,直接可以才有变量:变量值 的方式来对其中的变量进行赋值
def animal = new Animal(name: "dog",age: 2)
//animal.name的方式获取变量的值,其实最终的实现也是 animal.getName()
println "this animal's name is ${animal.name},the  animal's age is ${animal.age}"
  • groovy 中的类默认集成字 groovyObject ,在这个类中默认实现了getProperty 和 setProperty 方法
  • groovy 中的类默认都是public类型的,所有的方法变量默认都是public 类型的
  • groovy 中在创建对象的同时可以对变脸进行赋值
  • groovy 中对象.变量名 默认调用的是 变量的get方法

groovy 中的面向对象

对于上图的解释就是:

  • 运行时编译器首先会去对应的类中查找调用的对应的方法,如果没有找到之后会去metaClass中寻找这个方法
  • 如果还是没有找到就会寻找这个类中是否重写了 methodMissing() 这个方法,重写了就会调用这个方法,如果没有找到就会查找是否调用了 invokeMethod() 这个方法

下面举几个例子去理解一下

  • 定义Animal类
    package verible

      class Animal {
          String name
          Integer age
      }
    
  • 创建对象并测试调用这个对象不存在的方法

       def animal = new Animal(name: "dog",age: 2)
      //调用对象中不存在的一个方法
      animal.cry()
    
  • 运行结果为:

  • 得到结论,当我们调用一个对象中不存在的方法并且没有重写 methodMissing() 和 invokeMethod() 两个方法的前提下,运行会报错,MissingMethodExcept 对应方法找不到的错误,与java不同的是,groovy方法找不到的报错是在运行时报错的,而java直接编译时就不会通过,可见groovy的运行时还是很强大的
1. 定义了 invokeMethod() 方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值