Groovy探索之运算符的重载 一

Groovy探索之运算符的重载 一,第1张

概述                     Groovy探索之运算符的重载 一     运算符最常用的是算术运算符和关系运算符。Groovy语言对这些常用的运算符的重载提供了很好的支持。比如重载加号的方法是“plus”,我们只要在我们自己的类中实现了该方法,就能使用加号对对象进行相加运算。下面举个例子。 比如,我们有一个类Yuan,用来模拟我们的人民币元。如下: class Yuan {                            Groovy探索之运算符的重载 一     运算符最常用的是算术运算符和关系运算符。Groovy语言对这些常用的运算符的重载提供了很好的支持。比如重载加号的方法是“plus”,我们只要在我们自己的类中实现了该方法,就能使用加号对对象进行相加运算。下面举个例子。 比如,我们有一个类Yuan,用来模拟我们的人民币元。如下: class Yuan {         def num         def toString()     {        this .num     }   }   我们可以给该类对象初始化一个金额,表示有多少钱,通过“ toString ”方法可以获得这个金额数。很简单的一个类。 现在我有了两个对象,比如说上个月得的钱和这个月得的钱,我当然想把他们加起来,得到一个新的对象。这就需要重载加号运算符了,代码如下: class Yuan {         def num         def Yuan plus (Yuan yuan)     {        new Yuan(num:( this .num+yuan.num))     }         def toString()     {        this .num     }   }   可以看到,“ plus ”方法的实现其实相当的简单,就是初始化一个新的 Yuan 对象,构造器的参数为两个相加对象金额的和。 下面,我们来测试我们的重载过的加号运算符:             def y1 = new Yuan(num: 29 )       def y2 = new Yuan(num: 234 )             def y3 = y1+y2             println y3.toString()       结果为: 263   是不是很简单。除了加号运算符对应的方法为“ plus ”,下面是一些其他常用的运算符对应的方法: -                                   minus *          multiply **(成方)     power /            div %           mod   关系运算符就显得简单一些。所有的关系运算符,如“==”、“!=”、“>”、“>=”、“<”、“<=”都通过实现“ compareto”方法来重载。 我们来看看如何重载关系运算符: class Yuan implements Comparable{         def num         def toString()     {        this .num     }         def int compareto (obj)     {        this .num. compareto (obj.num)     }    }     可以看到,对关系运算符的重载也是十分简单的。值得注意的是,重载关系运算符需要实现“ Comparable ”接口,而不是简单的实现“ compareto ”方法。 下面来测试这个重载了的关系运算符:        def y1 = new Yuan(num: 98 )        def y2 = new Yuan(num: 1 )            println y1>y2               println y1<y2            println y1==y2     结果为: true false false     还有很多运算符,如位运算符等都可以被重载,方法也都一样。详细每一个运算符需要实现的方法,可以在使用到的时候查阅资料。 总结

以上是内存溢出为你收集整理的Groovy探索之运算符的重载 一全部内容,希望文章能够帮你解决Groovy探索之运算符的重载 一所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1268250.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存