2012-06-13 80 views
0

聽起來不像公案,只是想知道是否有關於類和對象的明確規則。我曾經認爲課程是藍圖,而對象則是他們的創造。但如果一個藍圖組合創造了另一個藍圖,那麼後一個藍圖是否也會成爲一個對象?OOP - 如果一個類創建一個類的實例,該實例是否也成爲一個對象?

+0

你的問題非常含糊。這是什麼語言?你談論「藍圖的組合創造了另一個藍圖」,這將意味着一個班級創建一個新班級,而不是一個班級的實例,這在所有語言中都不是普遍可行的。 – lanzz

+0

也許我不明白這個問題......如果有一個實例,那麼這個實例就是一個對象。創建它並不重要。任何在堆上實例化的東西都是一個實例,並且是一個對象。 – David

+0

不依賴於語言。一般的OOP。 –

回答

1

你的問題似乎有點哲學...... :)「對象」和「實例」在OOP中是非常同義的。

如果我理解正確你的問題,你的疑問是:「的對象仍然是一個對象也如果另一類是不是界定其類型同樣創造出來的?」

答案是「是」,一個實例是繼其類中定義的「樣板」創建一個對象,但有很多原因,你可以以間接的方式實例化一個類,例如靜態方法(例如工廠類的工廠方法),而不是直接使用new聲明。

如果你想看到一些來,在Java中一個簡單的例子可以是:

public class MyClass { 
    public MyClass(){} 
} 

public class MyClassFactory{ 

    public getInstance(){ 
     return new MyClass(); 
    } 
} 

在這種情況下,例如不受MyClass直接返回,而是從它的工廠類。然而它也是一個對象......

0

在我所知的幾乎所有的OO環境中,一個實例是相同的作爲對象。

對象/實例是由客戶端(例如new)還是由類(例如單件或工廠)創建並不重要。

如果您在類的上下文中討論藍圖,那麼從藍圖創建藍圖就是繼承,而不是實例化。

+0

所以如果一個類的組合創建一個新的類,那將是一個繼承,而不是一個對象? –

+0

@Demetriius,是的,這是基本的想法。 – paxdiablo

相關問題