認識class Class及其應用

2021-09-05 16:43:19 字數 3209 閱讀 5111

一.    class類

1.    class class物件描述了執行中的classes和inte***ces。通過class物件可以取得執行中的classes和inte***ces的相關資訊。

2.    每個class都有乙個相應的class物件。每個class的class物件儲存於編譯後的class所在的檔案中。所以,當jvm裝載乙個.class檔案時就會裝載乙個class物件。所以,乙個class只有乙個class物件。

二.    class類的基本應用

1.    如何獲取乙個class的class物件

1.1    通過class.forname(classname)方法,該方法接收乙個string引數,用以指定要生成哪個class的class物件.,如class.forname(「dog」)。

1.2    通過類字面常量(class literals)來獲得。

1)    字面常量的形式為:classname.class。如dog.class。

2)    對於基本類開,每種基本型別的外覆類都有乙個名為type的標準資料,能夠產生乙個指向相應的基本型別的class物件的reference。如int.class等同於integer.type。

1.3    通過object.getclass()方法來獲得,如

dog dog =newdog();

dog.getclass();

1.4    乙個產生class物件的例子

classcat

static

}classdog

static

}classduck

static

}publicclasstest

catch(classnotfoundexception

cnfe)

system

.out.println("after class.forname(\"dog\")");

duck d =newduck();

system

.out.println("after create duck()");

class

c3 = d.getclass();

system

.out.println("after class.forname(\"duck\")");        

} }

執行結果為:

in main()

loading cat

init cat()

after create cat()

loading dog

after class.forname("dog")

loading duck

init duck()

after create duck()

after class.forname("duck")

**(1)(2)產生了class  dog的class物件,但並沒有產生class dog物件。

**:產生乙個class的class物件不會導致產生乙個class物件

2.    用classc物件進行型別比較

2.1.    直接比較

兩個class物件不論是通過equals()函式還是直接用==運算子進行比較,比較的都是型別是否相同。

2.2.    通過class.isinstance(object)函式進行比較,如

classcat{}

classdog{}

classduck{}

publicclasstest

} 執行結果為:

c2.isintance(d):false

c3.isintance(d):true

2.3.    通過instanceof關鍵字進行比較。但是兩個處於不同的繼承體系中的類物件和class物件進行比較,會產生編譯錯誤。

classcat{}

classdog{}

classduck{}

publicclasstest

} 由於duck和dog處於兩個不同的繼承體系中,所以**(3)會發生編譯錯誤。如果把**(2)注釋掉,並去掉**(1)的注釋,編譯將通過。這是因為所有class都是繼承自object的,所以object與dog處於同乙個繼承體系中,可以進行比較。

2.4.    綜合例項

classbase{}

classderived{}

publicclasstest

publicstaticvoidmain(string

args)

} 執行結果為:

testing x of type class base

x instanceof base true

x instanceof derived false

base.isinstance(x) true

derived.isinstance(x) false

x.getclass() == base.class true

x.getclass() == derived.class false

x.getclass().equals(base.class) true

x.getclass().equals(derived.class) false

testing x of type class derived

x instanceof base false

x instanceof derived true

base.isinstance(x) false

derived.isinstance(x) true

x.getclass() == base.class false

x.getclass() == derived.class true

x.getclass().equals(base.class) false

x.getclass().equals(derived.class) true

認識shell及其變數

shell本身是一種用c語言編寫的程式,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。shell分類 linux的shell種類眾多,常見的有 bourne shell usr bin sh或 bin sh bo...

認識 URL 及其編碼

參考文獻 url 由網際網路工程任務組織 ietf uri 工作小組制定並成為乙個網際網路標準,收錄於 rfc1738。正如有許多不同的獲取資源的方法一樣,描述這些資源的位置也有多種方案。不同的協議有不同的 url 語法,但是 url 的通用語法為其他協議建立新的方案提供了框架。一般而言,url 的...

HTML標籤及其屬性認識

1.掌握html文件結構 2.掌握html標籤及其屬性的寫法。3.掌握常用標籤的使用 1.建議讀者每完成一部分的 都要用瀏覽器檢視效果,在過程中感受html標記的神奇。2.製作專案時認真體會頁面的布局 不同html標記的語義及屬性。3.編輯 過程中,出現問題不要擔心,可以檢查是否有錯誤字元 標點符號...