Java中Class類與Object類之間有什麼關係?

suyu_yuan發表於2016-03-24

轉自:http://zhidao.baidu.com/link?url=BZjHis1yMmj4WvH5-tjwXr5o78tqHnm40BDKDuOxGR3vPUH6nhZZBmBJ3TMkLHMXxii4LVx3xMIirLQgx1muYK

http://www.2cto.com/kf/201304/202440.html

Object類和Class類沒有直接的關係。

Object類是一切java類的父類,對於普通的java類,即便不宣告,也是預設繼承了Object類。典型的,可以使用Object類中的toString()方法。

Class類是用於java反射機制的,一切java類,都有一個對應的Class物件,他是一個final類。Class 類的例項表示,正在執行的 Java 應用程式中的類和介面。


平時看程式碼時,總是碰到這些即熟悉又陌生的名次,每天都與他們相見,但見面後又似曾沒有任何的交集,所以今天我就來認識下這兩個江湖俠客的背景:

CLASS

    在Java中,每個class都有一個相應的Class物件。也就是說,當我們編寫一個類,編譯完成後,在生成的.class檔案中,就會產生一個Class物件,用於表示這個類的型別資訊
獲取Class例項的三種方式:
    (1)利用物件呼叫getClass()方法獲取該物件的Class例項;
    (2)使用Class類的靜態方法forName(),用類的名字獲取一個Class例項(staticClass forName(String className) Returns the Classobject associated with the class or interface with the given stringname. );
    (3)運用.class的方式來獲取Class例項,對於基本資料型別的封裝類,還可以採用.TYPE來獲取相對應的基本資料型別的Class例項
    在newInstance()呼叫類中預設的構造方法 ObjectnewInstance()(可在不知該類的名字的時候,常見這個類的例項) Creates a new instance of the class represented by this Classobject.
    在執行期間,如果我們要產生某個類的物件,Java虛擬機器(JVM)會檢查該型別的Class物件是否已被載入。如果沒有被載入,JVM會根據類的名稱找到.class檔案並載入它。一旦某個型別的Class物件已被載入到記憶體,就可以用它來產生該型別的所有物件

    Class物件的生成方式如下:

    1.Class.forName("類名字串") (注意:類名字串必須是全稱,包名+類名);
    2.類名.class;
    3.例項物件.getClass();


相關文章