Gradle系列五之面向对象

作者: zhang_pan | 来源:发表于2019-05-27 15:37 被阅读4次

新建一个Groovy Class,这个类叫做Person:

class Person {
    String name
    Integer age
    def increaceAge(int year) {
        return age + year
    }
}

Groovy类、方法、变量默认都是public的
然后新建一个Gradle script,如ObjectStudy去使用上面这个类:

def person = new Person(name: "zhangpan", age: 25)
//无论是直接用.去调用还是调用get/set最终都是去调用get/set
println "the name is ${person.name}, the age is ${person.age}"
println person.increaceAge(10)

打印输出如下:

the name is zhangpan, the age is 25
35
接口

和Java的接口完全一样

Groovy运行时元编程

我们在ObjectStudy.groovy中调用Person类没有的方法,如:

person.cry()

这时候运行就会报错:MissingMethodException
此时我们在Person.groovy中重写invokeMethod方法:

Object invokeMethod(String s, Object o) {
        println "the method name is invokeMethod  ${s}"
    }

再去运行,发现没有报错了,而且打印输出如下:

the method name is invokeMethod cry

我们再添加methodMissing方法:

def methodMissing(String name, Object args) {
        println  "the method name is methodMissing ${name}"
    }

运行,打印输出如下:

the method name is methodMissing cry

为类动态的添加方法:

person.metaClass.cry = {
    println "the metaClass cry generated"
}

这时候再运行,打印输出为:

the metaClass cry generated

也能为类动态的添加属性:

person.metaClass.sex = 'male'
println person.sex

打印输出为:

male

喜欢本篇博客的简友们,就请来一波点赞,您的每一次关注,将成为我前进的动力,谢谢!

相关文章

  • Gradle系列五之面向对象

    类 新建一个Groovy Class,这个类叫做Person: Groovy类、方法、变量默认都是public的然...

  • Gradle系列

    Gradle系列:Gradle系列一之Gradle介绍Gradle系列二之配置Groovy环境Gradle系列三之...

  • 好程序员web前端学习路线之Javascript面向对象

    好程序员web前端学习路线之Javascript面向对象,面向对象是使用对象,面向对象开发就是使用对象开发。 面向...

  • 菜鸟成长系列-单例模式

    菜鸟成长系列-概述菜鸟成长系列-面向对象的四大基础特性菜鸟成长系列-多态、接口和抽象类菜鸟成长系列-面向对象的6种...

  • Java 工程师成神之路 | 2019正式版

    摘要:什么是面向对象 基础篇 01面向对象 → 什么是面向对象 面向对象、面向过程 面向对象的三大基本特征和五大基...

  • 第七篇 面向对象编程

    一、复习 二、time模块的补充 三、面向对象 四、初始面向对象和类 五、面向对象之间的交互 六、面向对象的组合 ...

  • 阿里P8资深架构师耗时一年整理19年Java工程师成神之路

    1、基础篇 01:面向对象 → 什么是面向对象 面向对象、面向过程 面向对象的三大基本特征和五大基本原则 → 平台...

  • Java 工程师成神之路 | 2019正式版

    一.基础篇 01 面向对象 → 什么是面向对象 面向对象、面向过程 面向对象的三大基本特征和五大基本原则 → 平台...

  • JavaScript之面向对象编程

    五、面向对象编程 目录:面向对象原型继承、面向对象class继承(ES6引入的) 1.面向对象原型继承 类:模板 ...

  • js面向对象

    js面向对象(第五周) 什么是面向对象 面向对象是一种编程思想,是在面向过程编程(结构化编程)之后出现的,面向对象...

网友评论

    本文标题:Gradle系列五之面向对象

    本文链接:https://www.haomeiwen.com/subject/anshtctx.html