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