請重新標記這個問題,包括與它相關的什麼時候應該使用嵌套類的示例?
所以我的Java書對嵌套類一整章的語言,但你應該只有真正使用它們的音符結束了,當說到「造型組成關係和實現你想隱藏的課程的內部「。所以讓我們來討論一下你想要使用嵌套類和一些例子。
請重新標記這個問題,包括與它相關的什麼時候應該使用嵌套類的示例?
所以我的Java書對嵌套類一整章的語言,但你應該只有真正使用它們的音符結束了,當說到「造型組成關係和實現你想隱藏的課程的內部「。所以讓我們來討論一下你想要使用嵌套類和一些例子。
嵌套/內部類只是一個專門用於另一個類的上下文的類,它沒有它自己的類文件。如果它鏈接到一個實例,它只能在父類實例的上下文中實例化;它可以看到私人數據,或者只有私人靜態數據,如果它是靜態類。
Java開發者站點有一個嵌套類教程一個示例: http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html
使用的幾個例子:
(考慮像Hibernate這樣的工具的數據庫會話):假設你有一個Session接口,並且SessionFactory返回一個Sessio的實例ñ。實現Session接口的SessionImpl具體類可以是知道如何構建和初始化它的工廠的內部類。
在檢票Web框架,各GUI部件具有相關聯的「模型」,其任務是將數據線連接到組件。界面如下所示:
public interface IModel extends IDetachable {
public Object getObject();
public Object setObject();
}
假設您有一些特殊的邏輯來檢索您編寫的自定義GUI組件的數據。由於沒有其他組件以相同的方式檢索數據,因此可以在提供IModel的位置使用匿名類來處理數據檢索。如果你需要重用你的IModel實現的同一個類中有另一個點,你可以把它作爲一個內部類。之後,如果您需要其他模型,則可以將其轉換爲頂級類。
通常,在需要類定義的情況下使用內部類,但該類僅在父類的上下文中可用或者僅有意義。
我對嵌套類的實際使用情況是在全局設置對象中。
父類是一個Singleton,嵌套類作爲設置類別。
有在做內部對象作爲單獨的類,因爲它們是沒有真正的點在設置類範圍之外不使用它們。
我使用嵌套類來封裝算法,這些算法通常會作爲一個有很多參數的方法來完成。我使用具有原始數據的類,並將算法放入嵌套類的單獨文件中(使用partial關鍵字)。通過這種方式,我可以在算法完成後爲該算法和其(工作)數據生成屬性。 我知道,沒有嵌套類可以很容易地完成,但這種感覺是正確的,因爲算法是故意爲父類構建的。
public partial class Network
{
partial void initFDLF()
{
fdlf=new FDLF(this);
}
public FDLF fdlf;
public class FDLF
{
internal bool changed=true;
internal bool pvchange=true;
public double epsilon = 0.001;
public bool fdlfOk=false;
public void init(){...}
public void run(){...}
...
這個問題有一個「語言不可知「標籤,部分類只存在於.net中 – 2014-03-08 23:56:51
備註:有一篇關於Sun對微軟引入MS Java代表的迴應的有趣文章(無鏈接,抱歉)。它的要點是嵌套班比代表做得更好。這是導致Sun起訴MS並最終導致.Net和C#的問題之一...(我想這也總結了我關於嵌套類的感受 - 沒有什麼好的可以從他們中誕生出來。:-)) – 2009-10-11 00:46:25
可能的重複[爲什麼/什麼時候應該在.net中使用嵌套類?或者你不應該?](http://stackoverflow.com/questions/48872/why-when-should-you-use-nested-classes-in-net-or-shouldnt-you) – nawfal 2013-04-18 20:46:32