加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy探索之运算符的重载 一

发布时间:2020-12-14 16:59:19 所属栏目:大数据 来源:网络整理
导读:???????????????????? Groovy探索之运算符的重载 一 ? ? 运算符最常用的是算术运算符和关系运算符。Groovy语言对这些常用的运算符的重载提供了很好的支持。比如重载加号的方法是“plus”,我们只要在我们自己的类中实现了该方法,就能使用加号对对象进行相加
???????????????????? 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
?
?
还有很多运算符,如位运算符等都可以被重载,方法也都一样。详细每一个运算符需要实现的方法,可以在使用到的时候查阅资料。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读