類(lèi)和對(duì)象.習(xí)題
?
?
1、基本概念題:
?
1.什么叫類(lèi)?什么叫對(duì)象?
??? 類(lèi)是相似對(duì)象中共同屬性和方法的集合體。對(duì)象是類(lèi)的實(shí)例。
?
2.對(duì)象怎樣得到內(nèi)存空間的?垃圾對(duì)象怎樣回收的?
??? 對(duì)象的內(nèi)存空間是在用戶(hù)需要時(shí),用new運(yùn)算符創(chuàng)建的。對(duì)象也有作用范圍,我們把超出作用范圍的對(duì)象(或稱(chēng)不再被使用的對(duì)象)稱(chēng)作垃圾對(duì)象。在Java中,收集和釋放內(nèi)存是一個(gè)叫做自動(dòng)垃圾回收線程的責(zé)任。自動(dòng)垃圾回收線程在系統(tǒng)空閑時(shí)自動(dòng)運(yùn)行,這個(gè)線程監(jiān)視用戶(hù)程序中所有對(duì)象的有效作用范圍,當(dāng)某個(gè)對(duì)象超出其作用范圍時(shí),該線程就對(duì)這樣的對(duì)象做上垃圾對(duì)象標(biāo)識(shí),并在適當(dāng)?shù)臅r(shí)候一次性回收這些垃圾對(duì)象。
??? 對(duì)象的內(nèi)存空間是在用戶(hù)需要時(shí),用new運(yùn)算符創(chuàng)建的。對(duì)象也有作用范圍,我們把超出作用范圍的對(duì)象(或稱(chēng)不再被使用的對(duì)象)稱(chēng)作垃圾對(duì)象。在Java中,收集和釋放內(nèi)存是一個(gè)叫做自動(dòng)垃圾回收線程的責(zé)任。自動(dòng)垃圾回收線程在系統(tǒng)空閑時(shí)自動(dòng)運(yùn)行,這個(gè)線程監(jiān)視用戶(hù)程序中所有對(duì)象的有效作用范圍,當(dāng)某個(gè)對(duì)象超出其作用范圍時(shí),該線程就對(duì)這樣的對(duì)象做上垃圾對(duì)象標(biāo)識(shí),并在適當(dāng)?shù)臅r(shí)候一次性回收這些垃圾對(duì)象。
?
3.什么叫引用類(lèi)型?對(duì)象是引用類(lèi)型嗎?
??? 所謂引用類(lèi)型,是指該類(lèi)型的標(biāo)識(shí)符表示的是一片內(nèi)存連續(xù)地址的首地址。
??? 對(duì)象和數(shù)組一樣,也是引用類(lèi)型。即對(duì)象定義后,系統(tǒng)將給對(duì)象標(biāo)識(shí)符分配一個(gè)內(nèi)存單元,用于存放實(shí)際對(duì)象在內(nèi)存中的存放位置。
4.類(lèi)的修飾符共有幾種?分別是什么?
??? 類(lèi)聲明的<修飾符>分為訪問(wèn)控制符和類(lèi)型說(shuō)明符兩部分,分別用來(lái)說(shuō)明該類(lèi)的訪問(wèn)權(quán)限以及該類(lèi)是否為抽象類(lèi)或最終類(lèi)。
??? 訪問(wèn)控制符:private、public和protected
??? 類(lèi)型說(shuō)明符:abstract和final
?
5.共有幾種形式的變量?這些變量各自的用途是什么?
??? 變量可分為:
??? 變量可分為:
??? static:指明該成員變量是一個(gè)類(lèi)成員變量
??? final:指明該成員變量是常量
??? transient:指明該成員變量是臨時(shí)變量。transient很少使用。
?
6.成員變量和成員方法的修飾符共有幾種?各自的訪問(wèn)權(quán)限是什么?
??? 有private、public和protected三種
??? private:修飾符表示該成員變量只能被該類(lèi)本身訪問(wèn),任何其他類(lèi)都不能訪問(wèn)該成員變量。
??? protected:修飾符表示該成員變量除可以被該類(lèi)本身和同一個(gè)包的類(lèi)訪問(wèn)外,還可以被它的子類(lèi)(包括同一個(gè)包中的子類(lèi)和不同包中的子類(lèi))訪問(wèn)。
??? public:修飾符表示該成員變量可以被所有類(lèi)訪問(wèn)。
?
??? 成員方法相同。
7.同一個(gè)包中類(lèi)的成員(包括成員變量和方法)用什么修飾符修飾,就只可以互相訪問(wèn)?
??? private
8.類(lèi)的成員(包括成員變量和方法)的protected訪問(wèn)權(quán)限是什么?
??? 表示該成員變量除可以被該類(lèi)本身和同一個(gè)包的類(lèi)訪問(wèn)外,還可以被它的子類(lèi)(包括同一個(gè)包中的子類(lèi)和不同包中的子類(lèi))訪問(wèn)。
?
9.什么叫實(shí)例成員變量?什么叫類(lèi)成員變量?各有什么用途?
??? 類(lèi)成員變量就是類(lèi)中聲明的變量,實(shí)例成員變量是方法中聲明的變量。
??? 類(lèi)成員變量可以直接調(diào)用,實(shí)例成員變量必須通過(guò)實(shí)例引用,可實(shí)現(xiàn)數(shù)據(jù)封裝。
??? (自己理解的,不知道對(duì)不對(duì))
?
10.什么叫實(shí)例方法?什么叫類(lèi)方法?設(shè)計(jì)類(lèi)方法時(shí)有什么要求?
??? 類(lèi)方法又稱(chēng)靜態(tài)方法(static method),是不屬于特定對(duì)象的方法,可以訪問(wèn)靜態(tài)變量,但不可以直接訪問(wèn)實(shí)例變量。
??? 類(lèi)方法又稱(chēng)靜態(tài)方法(static method),是不屬于特定對(duì)象的方法,可以訪問(wèn)靜態(tài)變量,但不可以直接訪問(wèn)實(shí)例變量。
??? 實(shí)例方法是一個(gè)特定實(shí)例的方法,其執(zhí)行必須要有一個(gè)對(duì)象的存在。
??? 詳細(xì)信息參見(jiàn):
http://www.cnblogs.com/Ivony/archive/2006/06/30/439377.html
?
11.什么叫方法的重寫(xiě)?構(gòu)造方法可以重寫(xiě)嗎?方法重寫(xiě)在面向?qū)ο蟪绦蛟O(shè)計(jì)中有什么意義?
??? 所謂方法重寫(xiě)(overloading),是指一個(gè)方法名定義了多個(gè)方法實(shí)現(xiàn)。方法重寫(xiě)時(shí)要求,不同的方法,其參數(shù)類(lèi)型或參數(shù)個(gè)數(shù)要有所不同。
??? 構(gòu)造方法可以重寫(xiě)。
??? 其面向?qū)ο蟪绦蛟O(shè)計(jì)中的意義:保證了對(duì)象的多樣性和靈活性。
???
12.敘述編寫(xiě)和運(yùn)行帶有自定義包Java程序的操作步驟。
??? 總結(jié)編寫(xiě)、運(yùn)行上述帶有自定義包Java程序的操作步驟如下:
??? (1)創(chuàng)建文件夾。如在本地計(jì)算機(jī)的d盤(pán)創(chuàng)建文件夾MyPackage(d:\MyPackage)
??? (2)在環(huán)境變量中添加自定義包的路徑。如在autoexec.bat文件的classpath參數(shù)中添加d:\(注意:若在Windows98下,則設(shè)置完成后要運(yùn)行一下該批處理文件)
??? (3)編譯包中類(lèi)的.java文件。如在DOS下執(zhí)行命令:javac Date1.java
??? (4)把編譯成功的.class文件移入包中。如把當(dāng)前工作路徑下的Date1.class文件移動(dòng)到文件夾d:\MyPackage中
??? (5)編譯導(dǎo)入包的.java文件。如在DOS下執(zhí)行命令:javac UseDate.java
??? (6)運(yùn)行導(dǎo)入包的.class文件。如在DOS下執(zhí)行命令:java UseDate
??? (1)創(chuàng)建文件夾。如在本地計(jì)算機(jī)的d盤(pán)創(chuàng)建文件夾MyPackage(d:\MyPackage)
??? (2)在環(huán)境變量中添加自定義包的路徑。如在autoexec.bat文件的classpath參數(shù)中添加d:\(注意:若在Windows98下,則設(shè)置完成后要運(yùn)行一下該批處理文件)
??? (3)編譯包中類(lèi)的.java文件。如在DOS下執(zhí)行命令:javac Date1.java
??? (4)把編譯成功的.class文件移入包中。如把當(dāng)前工作路徑下的Date1.class文件移動(dòng)到文件夾d:\MyPackage中
??? (5)編譯導(dǎo)入包的.java文件。如在DOS下執(zhí)行命令:javac UseDate.java
??? (6)運(yùn)行導(dǎo)入包的.class文件。如在DOS下執(zhí)行命令:java UseDate
13.什么叫內(nèi)部類(lèi)
??? 內(nèi)嵌于另一個(gè)類(lèi)中的類(lèi)稱(chēng)為內(nèi)部類(lèi)。
??? 當(dāng)一個(gè)類(lèi)只在某個(gè)類(lèi)中使用,并且不允許除外部類(lèi)外的其他類(lèi)訪問(wèn)時(shí),可考慮把該類(lèi)設(shè)計(jì)成內(nèi)部類(lèi)。
???
內(nèi)部類(lèi)具有以下特性:
? 內(nèi)部類(lèi)作為外部類(lèi)的成員。Java將內(nèi)部類(lèi)作為外部類(lèi)的一個(gè)成員,因此內(nèi)部類(lèi)可以訪問(wèn)外部類(lèi)的私有成員變量或方法。
? 內(nèi)部類(lèi)的類(lèi)名只能用在外部類(lèi)和內(nèi)部類(lèi)自身中。當(dāng)外部類(lèi)引用內(nèi)部類(lèi)時(shí),必須給出完整的名稱(chēng),且內(nèi)部類(lèi)的類(lèi)名不能與外部類(lèi)的類(lèi)名相同。
??? 在實(shí)際的Java程序設(shè)計(jì)中,內(nèi)部類(lèi)主要用來(lái)實(shí)現(xiàn)接口。
? 內(nèi)部類(lèi)作為外部類(lèi)的成員。Java將內(nèi)部類(lèi)作為外部類(lèi)的一個(gè)成員,因此內(nèi)部類(lèi)可以訪問(wèn)外部類(lèi)的私有成員變量或方法。
? 內(nèi)部類(lèi)的類(lèi)名只能用在外部類(lèi)和內(nèi)部類(lèi)自身中。當(dāng)外部類(lèi)引用內(nèi)部類(lèi)時(shí),必須給出完整的名稱(chēng),且內(nèi)部類(lèi)的類(lèi)名不能與外部類(lèi)的類(lèi)名相同。
??? 在實(shí)際的Java程序設(shè)計(jì)中,內(nèi)部類(lèi)主要用來(lái)實(shí)現(xiàn)接口。
?
14.什么叫類(lèi)的封裝性?類(lèi)的封裝性在面向?qū)ο蟪绦蛟O(shè)計(jì)中有什么意義?
??? 類(lèi)的封裝性是指類(lèi)把成員變量和方法封裝為一個(gè)整體,這就劃分了模塊的界限。
??? 類(lèi)的封裝性是指類(lèi)把成員變量和方法封裝為一個(gè)整體,這就劃分了模塊的界限。
??? 保證模塊正確性的措施則是由信息的隱藏性來(lái)實(shí)現(xiàn)的
?
?
?
2、程序設(shè)計(jì)題:
?
15.對(duì)于下面設(shè)計(jì)的類(lèi)A,哪一個(gè)方法是構(gòu)造方法?
?? public class A
?? {
?? public void A () {}
?? public class A() {}
?? public static class A () {}
?? public static void class A() {}
?? }
?? public class A
?? {
?? public void A () {}
?? public class A() {}
?? public static class A () {}
?? public static void class A() {}
?? }
??? public static A()
16.下面哪些main()方法是不正確的?
?? public static void main()
?? public void static main(String [] args)
?? public static void main(String args)
?? public static void main(String args[])
??? public static void main(String[] args)
?
17.設(shè)計(jì)一個(gè)復(fù)數(shù)類(lèi)。要求復(fù)數(shù)類(lèi)包括實(shí)數(shù)和虛數(shù)兩個(gè)成員變量,同時(shí)類(lèi)中應(yīng)包含復(fù)數(shù)運(yùn)算的各種方法。例如方法應(yīng)包括:兩個(gè)復(fù)數(shù)的加、減、乘、除等。復(fù)數(shù)的格式應(yīng)該是:實(shí)數(shù)+虛數(shù)。最后,編寫(xiě)一個(gè)測(cè)試程序進(jìn)行測(cè)試。
18.設(shè)計(jì)一個(gè)日期類(lèi),其輸出格式是:“月/日/年”或“June 13,1993”。利用構(gòu)造方法重寫(xiě)技術(shù)設(shè)計(jì)適合上面輸出格式的構(gòu)造方法。類(lèi)中的輸出方法也要利用方法重寫(xiě)技術(shù)來(lái)滿(mǎn)足上述的輸出格式。最后,編寫(xiě)一個(gè)測(cè)試程序來(lái)測(cè)試所定義的日期類(lèi)能否實(shí)現(xiàn)預(yù)定的功能。
19.設(shè)計(jì)一個(gè)分?jǐn)?shù)類(lèi)。要求分?jǐn)?shù)類(lèi)包括分子和分母兩個(gè)成員變量,同時(shí)類(lèi)中應(yīng)包含分?jǐn)?shù)運(yùn)算的各種方法。例如方法應(yīng)包括:兩個(gè)分?jǐn)?shù)的加、減、乘、除等。分?jǐn)?shù)的格式應(yīng)該是:分子/分母。最后,編寫(xiě)一個(gè)測(cè)試程序進(jìn)行測(cè)試。
20.設(shè)計(jì)一個(gè)電視機(jī)類(lèi)。成員變量包括商品編號(hào)、商品型號(hào)、生產(chǎn)廠家、大小、重量、開(kāi)關(guān)狀態(tài)等,同時(shí)設(shè)計(jì)一些方法對(duì)電視機(jī)的狀態(tài)進(jìn)行控制。例如方法應(yīng)包括:開(kāi)/關(guān)電視機(jī)、更換頻道、提高/減小音量等。要求商品編號(hào)要自動(dòng)生成。
注意:有些成員變量應(yīng)定義成靜態(tài)的(static);控制和操縱靜態(tài)成員變量的方法應(yīng)是靜態(tài)的(static)。
注意:有些成員變量應(yīng)定義成靜態(tài)的(static);控制和操縱靜態(tài)成員變量的方法應(yīng)是靜態(tài)的(static)。
21.編寫(xiě)一個(gè)基本賬戶(hù)類(lèi)。成員變量包含有賬號(hào)、儲(chǔ)戶(hù)姓名和存款余額等。方法有存款和取款等。編寫(xiě)一個(gè)測(cè)試程序來(lái)測(cè)試所定義的賬戶(hù)類(lèi)能否實(shí)現(xiàn)預(yù)定的功能。
22.設(shè)計(jì)一個(gè)長(zhǎng)方形類(lèi)。成員變量包括長(zhǎng)度和寬度。類(lèi)中除了包含計(jì)算周長(zhǎng)和面積的方法外,還應(yīng)該能夠用set方法來(lái)設(shè)置長(zhǎng)方形的長(zhǎng)度和寬度,以及能夠用get方法來(lái)獲得長(zhǎng)方形的長(zhǎng)度和寬度。最后,編寫(xiě)一個(gè)測(cè)試程序來(lái)測(cè)試所定義的長(zhǎng)方形類(lèi)能否實(shí)現(xiàn)預(yù)定的功能。
要求:使用自定義包方法。
要求:使用自定義包方法。
23.設(shè)計(jì)一個(gè)日期類(lèi),其輸出格式是:“月/日/年”或“June 13,1993”,并編寫(xiě)一個(gè)測(cè)試程序來(lái)測(cè)試所定義的日期類(lèi)能否實(shí)現(xiàn)預(yù)定的功能。
要求:把所設(shè)計(jì)的日期類(lèi)作為測(cè)試類(lèi)的內(nèi)部類(lèi)。
要求:把所設(shè)計(jì)的日期類(lèi)作為測(cè)試類(lèi)的內(nèi)部類(lèi)。
24.設(shè)計(jì)一個(gè)汽車(chē)類(lèi),其成員變量包括:顏色、品牌、車(chē)門(mén)、車(chē)燈、行駛速度等。其方法包括:打開(kāi)車(chē)門(mén)、打開(kāi)車(chē)燈、加速、減速等。可以根據(jù)自己對(duì)汽車(chē)的了解來(lái)設(shè)計(jì)類(lèi)中的成員變量和方法。在方法中用輸出方法名稱(chēng)的方式來(lái)表示這個(gè)方法已被調(diào)用。最后,編寫(xiě)一個(gè)測(cè)試程序來(lái)測(cè)試所定義的汽車(chē)類(lèi)能否實(shí)現(xiàn)預(yù)定的功能。
?
?
?
?