Groovy探索之運算子的過載 一

2021-04-18 15:28:06 字數 1794 閱讀 4301

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 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...