java中沒有運算子多載

來源:互聯網
上載者:User
java中既然沒有運算子多載,那麼它的代替實現是什麼。。。
我來幫他解答
滿意回答
2011-04-22 13:43
其實是有的,就是字串操作裡的+和+=。但是不能自訂運算子多載,所以只有這個是重載的。它的代替實現實際上就是方法(函數)。比如BigDecimal類,可以用來表示很長的十進位數,這樣的數相加並不用重載的+號而直接有一個叫做add(BigDecimal)的成員函數來實現。
4|評論(1)


求助知友
timeslot | 當前分類:12 級 排名:2770
擅長JAVA相關:12 級 排名:2770
提問者對回答的評價:
謝謝指教。
按預設排序|按時間排序
 其他回答 共2條
檢舉|2011-04-22 13:04loveOuyoko|當前分類:21 級排名:44
每個語言有每個語言的特性,運算子多載不是java支援的特性,也沒有規定必須有替代實現。
就像java至今不支援閉包一樣,運算子多載也沒有代替實現。

對物件導向的語言來說,運算子本身就不夠“物件導向”,一切都可以用方法來實現


基本態度

 

對於c++來說,一開始便是從c開始的,最初稱為帶類的c,與c的相容性在很多設計決策中起了很多作用。在類型設計中,表現在類型保持了相容c的,雖然有了class,但依然保留了struct,決定性的原因就是相容性。而java最初設計的時候,就是以一門物件導向語言來設計的,從c,c++,smalltalk裡學習,但並沒有保持向上相容性,以一門新的語言的姿態出現。最終對class的處理上,c++盡量保持了與基本類型的相容性,讓class表現的就像一個基本類型。一個class定義就與基本類型一樣,是一組資料實體,同時引入了運算子重裝機制,使得class更可以像一個基本類型那樣+-*/...。java對於class則採用了另一個方向,與基本類型區別鮮明,也沒有運算子多載。為對象引入了一個新的間接層,每個class的對象就是一個引用。這樣的設計一方面把記憶體的管理交給了記憶體回收行程,另一方面使得容器實現時,可以將所有的對象一致對待,間接層的引入提高了抽象層次,同時帶來了間接引起的訪問開銷。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.