為什麼可以在類的定義中例項化自己?不會遞迴到底嗎?

2021-10-09 05:02:30 字數 603 閱讀 3292

答:最近遇到這個問題有點想不明白,翻閱了很久大致明白了。我總結成以下4點:

答:因為類a載入到jvm上,宣告屬於當前包下,所以編譯時,屬性雖然有類a,但是類a可以在jvm找到,所以不會報錯。

參考:

classa}

...main(.

..)

答:方法是等到被呼叫時才去執行的、才去new物件的。同理這時可以找到類a而不會編譯出錯,而方法中new完後就返回a,沒有其他操作了,裡面的物件雖然也有此方法,但沒有去呼叫。如果要遞迴,那應該是要不斷用物件去呼叫此方法才會遞迴

classa.

..main(.

..)

答:此時類a有乙個屬性是a ,而a是a類的,則屬性a作為物件,也有乙個屬性a,所以當類a例項化後,每個屬性a都會包含屬性a,這樣不斷遞迴下去,直到堆溢位。

classa.

..main(.

..)

答:因為static隨著類的載入而載入,之後再造物件是共享之前的static屬性的,所以就不會再去new物件了。(類似單例模式的餓漢式)

C 為什麼可以在乙個類裡宣告並例項化自身類的物件

例子1 自身類的物件是靜態字段,該欄位屬於類,而不屬於該類的每個物件。using system namespace newselfclassobject n o atom.c.radius,atom.n.radius,atom.o.radius c 6 引入了字串字首 console.writeli...

const物件為什麼可以在標頭檔案中定義

對於標頭檔案中為什麼可以定義const變數 或物件 以及推薦用const代替 define巨集定義,之前一直概念不清晰,今天就總結一下。之前在網上查過,解釋的都不太到位,或者角度不一樣 從編譯原理 強弱定義?總之不能清晰理解,發現 c primer 上基本上涵蓋了所有平常遇到的c c 問題,而且 c...

AO中為什麼不能直接用類來例項化?

在ao開發中,經常會遇到類似的宣告 ibasicmap pmap new mapclass 於是就會產生這種疑問,為什麼不這樣宣告呢?mapclass pmap new mapclass 如果這樣宣告,將會編譯錯誤,不能通過類的全權名進行方法的呼叫,只能用介面例項來訪問。這是因為class 如上例中...