2010-01-21 32 views

回答

8

最接近的Java已經以C++的朋友是默認的訪問修飾符,也稱作爲包保護或包私有。這允許僅從同一包中的其他類訪問成員。

這也是將類放在同一個包中的最佳理由,而不是根據功能分組到子包中。

+0

「這也是將類放在同一個包中的最佳理由」 - 你是指所有*類嗎? – 2010-01-21 20:27:56

+0

不,當然不是。我的意思是根據功能分類的子類。那不清楚? – danben 2010-01-21 20:48:56

+0

如果有幫助 - 我不以任何方式反對命名空間。我在討論命名空間制定之後。 – danben 2010-01-21 20:57:00

7

在Java中沒有朋友功能的概念。最好的辦法是學習Java的如何做的知名度 - 包和私營部門(默認值),特別是可能是有趣的,你 - here's a quick tutorial

0

很可能你的設計有點不合適。真的不應該有一個朋友的功能需要,這就是爲什麼Java沒有包含它的語言。函數應該位於它所使用的數據所在的位置旁邊,如果不是,則應該將該數據作爲參數傳遞給該函數。在我看來,Friend函數違背了面向對象編程的主要思想。 C++傾向於允許您創建非OO程序,即使該語言完全支持OO編程相信的概念。

我會考慮修改您的設計以使功能更接近數據所在的位置,然後您真的不會有這個問題。但是,這並不總是可行的,特別是如果您正在使用遺留系統。在這種情況下,您應該考慮適配器類,getter和setter或參數。只是我的兩分錢。

0

friend函數是OOPs概念的缺點,因爲它用於從外部訪問類成員函數。這就是爲什麼它已從Java中刪除。

+0

不,不是。 http://www.parashift.com/c++-faq-lite/friends-and-encap.html – Mariusz 2014-01-16 09:42:57