Groovy探索之运算符的重载 一

本文介绍Groovy语言中运算符重载的实现方法。通过具体示例展示算术运算符如加减乘除及关系运算符的重载过程,并解释如何通过实现特定方法达到目的。
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
}
defintcompareTo(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
还有很多运算符,如位运算符等都可以被重载,方法也都一样。详细每一个运算符需要实现的方法,可以在使用到的时候查阅资料。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值