[英]Can you say an object is a reference to a class?
作為AP類的一部分,我正在學習對象,實例,引用等。因此,據我所知,引用是一個指向某物的變量:值,類等。 。 。 因此,說對象是對類的引用是合法的嗎?
注意:我知道這是主觀的,但我似乎無法在其他任何地方找到這樣的比較。
按照參考的通常定義,您不能這么說。 正確的將是“對象是類的實例 ”。
引用的通常定義是一個值,該值指向某個對象通常占用的存儲位置。 指針和引用之間的區別在於,您可以在前者上執行指針算術,但不能在后者上執行。
例如下面的代碼片段:
SomeClass o = new SomeClass();
SomeClass foo = o;
SomeClass
是類,而o
是對此new
關鍵字的特定調用返回的SomeClass
實例的引用。 new SomeClass()
為SomeClass
的新實例分配內存,並調用其構造函數對其進行初始化。 foo
是另一參考的非常相同的實例SomeClass
也由稱為o
。 換句話說, o
和foo
指向相同的對象,但不是相同的引用。
對象不是類的引用,而是類的實例。
不,那不是有效的聲明。 對象是類的實例 ,而不是對類的引用。 當你有類似的東西:
MyClass var = new MyClass();
然后var
是對其分配到的MyClass
實例的引用( new MyClass()
)。 該實例又是一個對象 。
從JLS§4.3.1開始 :
對象是類實例或數組。
引用值(通常只是reference )是指向這些對象的指針,還有一個特殊的null引用,它不引用任何對象。
就像別人說的那樣,一堂課就像一張藍圖。 當您基於類創建對象時,計算機將通過分配內存來基於類創建“部件”(變量)來“構建”對象。
因此,該對象不是對該類的引用,這意味着該對象只是將您重定向到該類。
該對象是該類的實例。
對象實際上是類的實例。 假設我們有String類。 String類型的對象是String類的實例 , 而不是該類本身的實例 。 給定String s="foo"
, s
的值將是對String類實例的引用。
現在,每個類都有一個與之關聯的java.lang.Class
對象,因此String.class
是對java.lang.Class實例的引用。
從JLS:
對象是類實例或數組。
引用值(通常只是reference )是指向這些對象的指針,還有一個特殊的null引用,它不引用任何對象。
不能。這就像說您今天早上吃的帶雞蛋的雞蛋是對帶雞蛋的抽象概念的引用。
請記住, class
是一個藍圖,但它本身並不是一個實際的具體對象。 僅當您通過new
關鍵字實例化對象時,才會發生這種情況。
Object foo = new Object();
foo
是對類Object
的特定具體實例的引用,而不是對類本身的引用。
Class bar = Object.class;
bar
是對Object
類的引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.