在jvm中,函數被加載到在類加載時初始化的方法區域中,堆中的對象調用這些函數以提高性能。封裝是數據成員和成員函數的綁定。在這種情況下,我沒有看到對象級封裝。 同樣,如果一個類有成千上萬的實例,可以一次又一次地共享相同的函數,因爲函數可以被看作是各種對象共享的資源。
請澄清。爲什麼封裝不在對象中/爲什麼我們稱之爲封裝
-2
A
回答
0
功能加載到其中的類裝載時間
Java的初始化不具備的功能的方法區,它只有其與一類總是相關的方法。如何加載這些方法取決於JVM。在HotSpot JVM中,可以在JVM的整個生命週期中優化和重建許多方法。
您不應該混淆類的靜態變量的初始化過程,只要完成一次,就可以在不同的時間以不同的方式操縱方法的代碼。
封裝是數據成員和成員函數的綁定。
我不同意。在面向對象的編程中,封裝是實現細節的隱藏。對象上方法的調用者不需要知道方法是如何實現的或者使用了哪些字段。
可以一次又一次地共享相同的函數,因爲函數可以被視爲各種對象共享的資源。
方法是隻讀的,因此它們可以有任意數量的副本並且沒有問題。因此,他們不是資源爭奪的來源。
成員不結合在一起,因爲它們是在類
它們究竟是如何結合的方法和實例數據並不重要。所有你需要知道的是一個對象有一個類,並且該類有方法。任何數量的對象都可以具有相同的類,而不會影響性能。 (除了內存不足的可能性)
+0
非常感謝。這些信息確實很好 –
相關問題
- 1. 命令模式 - 爲什麼封裝在對象中
- 2. 爲什麼intl.Message需要封裝在封閉函數中?
- 3. 爲什麼要用DataOutputStream封裝FileOutputStream?
- 4. 在PHP中封裝和不封裝HTML有什麼區別?
- 5. 我們稱之爲什麼?
- 6. 爲什麼KeyValueConfigurationCollection不密封?
- 7. 在python中我們稱之爲什麼?
- 8. 封裝函數是什麼?
- 9. 抽象和封裝有什麼區別?
- 10. 爲什麼變量在setTimeout封裝時不能通過
- 11. 爲什麼封閉類
- 12. 爲什麼密封System.ComponentModel.DataAnnotations.DisplayAttribute?
- 13. 爲什麼ListViewGroup被密封?
- 14. Angular:爲什麼我應該使用'封裝:ViewEncapsulation.Native'?
- 15. 爲什麼window.location.reload需要封裝在一個函數(){}中?
- 16. 爲什麼打破封裝在C++中工作?
- 17. 什麼等同於封裝封裝內部功能的封裝專用接口?
- 18. 爲什麼NPM檢查這麼多依賴於單一封裝
- 19. 爲什麼我們將LDAP對象稱爲對象類
- 20. 爲什麼iOS SDK不封裝所有的庫數據成員?
- 21. 封裝 - 當setter已經公開時,爲什麼我們需要它?
- 22. 爲什麼PasswordBox在Silverlight中被密封?
- 23. 爲什麼需要將靜態方法封裝到類中?
- 24. ADODB.Connection封裝爲System.Data.Common.DbConnection
- 25. 爲什麼我們需要包裝類
- 26. 裝配需要什麼?爲什麼我們使用它們?
- 27. 爲什麼我需要將我的JQuery代碼封裝在函數文字中?
- 28. 在java中封裝對象
- 29. 爲什麼封裝似乎與Open-Closed原理相矛盾?
- 30. 爲什麼Android的OnClickListeners被View接口封裝?
對象是狀態和行爲一起封裝到一個軟件組件中。 「不在物體中」?錯誤。你可以有許多具有相同功能的實例,但不共享。每個人都在自己的封裝狀態下運行。 – duffymo
是先生,但方法存儲在方法區域中,並且java對象實例位於堆棧區域中存在的引用id的訪問方法堆中。所以這些方法與通過不同對象實例訪問的方法相同。我在封裝中存在疑問,因爲方法和實例數據成員沒有像在課堂上一樣粘合在一起。通過創建不同的實例,我們一次又一次地共享相同的功能。 –
錯了。對不起,你不明白。這是每個面嚮對象語言的一部分。有用。你不願意承認,也許你誤解了? – duffymo