groovy探索之運算子的過載 一
運算子最常用的是算術運算子和關係運算子。groovy語言對這些常用的運算子的過載提供了很好的支援。比如過載加號的方法是「plus」,我們只要在我們自己的類中實現了該方法,就能使用加號對物件進行相加運算。下面舉個例子。
比如,我們有乙個類yuan,用來模擬我們的人民幣元。如下:
classyuan }
我們可以給該類物件初始化乙個金額,表示有多少錢,通過「
tostring
」方法可以獲得這個金額數。很簡單的乙個類。
現在我有了兩個物件,比如說上個月得的錢和這個月得的錢,我當然想把他們加起來,得到乙個新的物件。這就需要過載加號運算子了,**如下:
classyuan
deftostring()
} 可以看到,「
plus
」方法的實現其實相當的簡單,就是初始化乙個新的
yuan
物件,構造器的引數為兩個相加物件金額的和。
下面,我們來測試我們的過載過的加號運算子:
defy1 =newyuan(num:29)
defy2 =newyuan(num:
234)
defy3 = y1+y2
printlny3.tostring()
結果為:
263是不是很簡單。除了加號運算子對應的方法為「
plus
」,下面是一些其他常用的運算子對應的方法: -
minus
* multiply
**(成方)
power
/ div
% mod
關係運算子就顯得簡單一些。所有的關係運算子,如「==」、「!=」、「>」、「>=」、「<」、「<=」都通過實現「compareto」方法來過載。
我們來看看如何過載關係運算子:
classyuanimplementscomparable
defintcompareto(obj)
} 可以看到,對關係運算子的過載也是十分簡單的。值得注意的是,過載關係運算子需要實現「
comparable
」介面,而不是簡單的實現「compareto」方法。
下面來測試這個過載了的關係運算子:
defy1 =newyuan(num:98)
defy2 =newyuan(num:1)
printlny1>y2
printlny1
printlny1==y2
結果為:
true
false
false
還有很多運算子,如位運算子等都可以被過載,方法也都一樣。詳細每乙個運算子需要實現的方法,可以在使用到的時候查閱資料。
Groovy探索之運算子的過載 二
groovy探索之運算子的過載 二 前一篇詳細的說了說算術運算子和關係運算子的過載,這篇要說說賦值運算子和取值運算子,即 運算子的過載。還是以前一篇的 yuan 類來作為例子。classyuan 有了上面的類的定義,我們就可以如下使用這個類 defy newyuan y.num 109 printl...
Groovy探索之運算子的過載 二
groovy探索之運算子的過載 二 前一篇詳細的說了說算術運算子和關係運算子的過載,這篇要說說賦值運算子和取值運算子,即 運算子的過載。還是以前一篇的yuan類來作為例子。classyuan 有了上面的類的定義,我們就可以如下使用這個類 defy newyuan y.num 109printlny....
運算子過載之過載型別運算子
普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...