Class(類)
定義
計算機(jī)
是按照一系列成為程序的指令運行的機(jī)器。
Android設(shè)備
便是計算機(jī)敬鬓。
應(yīng)用
是使用Java語言編寫的程序画拾。
設(shè)備內(nèi)部是稱為
變量
的容器, 用于儲存數(shù)字或文字片段等值
府瞄。
對象
是變量,但在一下兩方面特殊:第一碘箍,對象中可包含更小的變量遵馆,及對象的
域
鲸郊。例如,表示房屋的對象可能包含一個color域货邓。
第二秆撮,我們可以像對象附加稱為方法的一系列指令,實際上是小程序换况。house對象可能具有一個setColor方法职辨,用于將房屋設(shè)置為不同的顏色。
對象分為多種
類
(類型)戈二。針對每個類拨匆,我們必須編寫定義:即屬于各個類對象的域和方法列表。每個給定類的對象
都有一組相同的域
和方法
挽拂。
例如:每個house對象必須具有稱為color的域和稱為setColor的方法惭每。但是每個house對象都可在其color域中包含不同的值:一個房子可以是紅色,另一個房屋為藍(lán)色亏栈。
在Java文件中編寫類的定義台腥。由于該定義包含關(guān)于該類的所有重要數(shù)據(jù),因此圖例使用文件表示類绒北。屬于
類的對象
成為類的實例
黎侈。每個實例都具有在類定義中列出的所有域
和方法
。
類名
對象有多個
類
闷游,給定類的對象
都有一組相同的域和方法峻汉。
例如,TextView類的每個對象都具有用于在屏幕上顯示文本的域
和方法
脐往。
與此同時休吠,ImageView類的對象具有用于顯示圖像的另外一組域
和`方法。請注意业簿,同一類的兩個對象的域中可能包含不同的值瘤礁。例如,TextVeiw類的每個對象的域中都儲存一段文版梅尤。在一個TextView對象中柜思,此域可能包含“Hello”;在另一個TextView中巷燥,此域可能包含“Goodbye”赡盘。
在Java中,類名的開頭是大些字幕缰揪,并且為駝峰式大小寫陨享,因此很容易識別。
Code
由于Android設(shè)備尚未可靠地理解人類語言,因此必須以較簡單的語言(例如Java)編寫應(yīng)用霉咨。
使用Java編寫的指令成為代碼
,并且能為設(shè)備所理解拍屑。
但是途戒,采用Java描述的細(xì)小步驟編寫應(yīng)用可能會相當(dāng)榮昌,因此我們首先用人類語言勾繪出應(yīng)用的輪廓僵驰。這種復(fù)述成為偽代碼
喷斋,只能為人類所理解。
Field (域)
對象是變量蒜茴,但在以下兩個方面特殊星爪。第一,對象中可包含更小的變量粉私,即對象的域顽腾。
例如,在MediaPlayer對象中可能包含多個域诺核,用于儲存正在播放的聲音文件的名稱抄肖、音量等級、文劍回防的當(dāng)前位置以及指示是否采用無線循環(huán)方式播放文件窖杀。第二漓摩,我們可向?qū)ο蟾郊臃Q為方法的一系列指令,實際上是小程序入客。我們的MediaPalyer對象可能具有play管毙、pause和stop方法。
對象域在創(chuàng)建對象時創(chuàng)立桌硫,在銷毀對象時銷毀夭咬。在對象的生命周期中,對象方法中的指令可使用域铆隘。
findViewById
給定類的每個對象都附有相同的方法集皱埠。
例如,活動類的每個對象都具有創(chuàng)建用戶界面對象的方法:即ImageView咖驮、TextView边器、Button等用戶能夠在屏幕上看到的內(nèi)容。
創(chuàng)建視圖對象后托修,還需要使用活動對象分別對這些對象進(jìn)行配置忘巧。這就是每個視圖對象都有一個ID編號的原因。
這些編號使得應(yīng)用中使用Java編寫的部分與使用XML編寫的部分之間能夠進(jìn)行通訊睦刃。
具體的說砚嘴,利用這些編號,使用Java創(chuàng)建的對象方法可以調(diào)用使用XML創(chuàng)建的對象方法。
各視圖的ID編號儲存在可傳遞至活動方法的Java變量中际长。該變量通過在布局文件的視圖對象描述中寫入變量名稱進(jìn)行創(chuàng)建耸采。例如,在代碼示例中創(chuàng)建名為R.id.today的變量工育,用于儲存TextView的ID編號虾宇。通過在布局文件的TextView描述中寫入屬性android:id=“@id+/today”,可完成創(chuàng)建如绸。
(R代表“資源”)
每個活動都有一個名為findViewById的方法嘱朽,用于查找已給出其ID編號的視圖對象。代碼示例會將變量R.id.today傳遞給次方法怔接,用于查找TextView搪泳。如果運行正確,返回值(方法生成的結(jié)果)將引用TextView扼脐,即允許活動調(diào)用TextView方法的一條信息片段岸军。為方便使用此引用,必須將其儲存于只能儲存“引用TextView”這一種類型值的特殊用途變量中瓦侮。
由于調(diào)用findViewById可查找許多不同類(TextView凛膏、ImageView等)的視圖對象,因此其返回值為常規(guī)用途引用脏榆,可能引用這些類中任何一個對象猖毫。必須將返回值從常規(guī)轉(zhuǎn)換(轉(zhuǎn)變)至特殊后,才能將該返回值儲存到特殊用途變量中须喂。此方向的轉(zhuǎn)換成為向下轉(zhuǎn)換吁断,由括號中的命令TextView執(zhí)行。
另一項要求是坞生,findViewById必須在執(zhí)行setContentView后執(zhí)行仔役,該方法用于創(chuàng)建TextView及布局文件中描述的其他視圖對象。
<TextView
android:id="@+id/today"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
// Excerpt from the file MainActivity.java.
// When the app is launched, put the current date (but not the time) into the TextView.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView today = (TextView) findViewById(R.id.today);
if (today != null) {
// The Date object also contains the current time.
Date todaysDate = new Date();
DateFormat justTheDate = DateFormat.getDateInstance();
String s = justTheDate.format(todaysDate);
today.setText(s);
}
}
只要對象存在是己,就必須牢記使用全局變量存儲的信息又兵。Android 慣例是以小寫字母 m 為開頭命名全局變
量,其中 m 代表 成員卒废,也是“域”的另一種說法沛厨。