您好,登錄后才能下訂單哦!
面向過程的結構化程序設計
結構化程序的弊端:
1.缺乏對數據的封裝;
2.數據和方法(對數據的操作)的分離。
什么是抽象數據類型
所謂抽象數據類型可以理解為:將不同類型的數據的集合組成一個整體用來描述一種新的事物;
? ?
什么是類
類定義了一種抽象數據類型。
類不但定義了抽象數據類型的組成(成員變量),同時還定義了可以對該類型實施的操作(方法)。
/**定義雇員類*/ public?class?Emp{ ??String?name; ??int?age; ??char?gender; ??double?salary; ??}
在此示例中,僅僅定義了Emp類型的組成,即成員變量。該類定義了4個成員變量:String類型的name用于存放名字;int類型的age用于存放年齡;char類型的gender用于存放性別;double類型的salary用于存放工資。
定義了Emp類以后,提升了代碼的模塊化以及代碼的重用性,但程序依然存在問題
-打印信息的方法是只能針對Emp數據操作,屬于Emp自身的方法,需要實現數據和方法(對該類數據的操作)的統一。
定義類的成員變量
類的定義包括“成員變量”的定義和“方法”的定義,其中“成員變量”用于描述該類型對象共同的數據結構。
Java語言中,類的成員變量的定義可以使用如下語法:
? ? ? ? ? ? class? 類名{
? ? ? ? ? ? ? ? 成員變量類型? 變量名稱;
? ? ? ? ? ? ? ? ? ... ... ...
? ? ? ? ? ? ? ? }
對象創建后,其成員變量可以按照默認的方式初始化。
初始化對象成員變量時,其默認值的規則如下表所示:
成員變量的類型 | 默認初始值 |
數值類型(byte、shout、int、long、float、double) | 0 |
boolean型 | false |
char型 | /u0000 |
引用類型 | null |
定義類的方法
類中除了定義成員變量,還可以定義方法,用于描述對象的行為,封裝對象的功能。
Java語言中,可以按照如下方式定義類中的方法:
? ? ? ? ? ?class? 類名{
? ? ? ? ? ? ? ? 修飾詞? 返回值類型? 方法名稱([參數列表]) {
? ? ? ? ? ? ? ? ? ?方法體... ... ...
? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ?... ... ...
? ? ? ? ? ? }
使用new關鍵字創建對象
類定義完成后,可以使用new關鍵字創建對象。創建對象的過程稱為實例化。
new運算的語法為:
? ? ? ?new? 類名();
? ? ? ?例如:new JFrame()可以創建一個窗體對象。
引用類型變量
為了能夠對實例化的對象進行訪問控制,需要使用一個特殊的變量——引用。
-引用類型變量可以存放該類對象的地址信息,通常稱為“指向該類的對象”;當一個引用類型變量指向該類的對象時,就可以通過這個變量對對象實施訪問。
-除8種基本類型外,用類、接口、數組等聲明的變量都稱為引用型變量,簡稱“引用”。
?
訪問對象的成員變量、調用方法
可以通過引用訪問對象的成員變量或調用方法。
??????Cell?c?=?new?Cell(); ?????? ??????c.row?=?2; ??????c.col?=?3; ?????? ??????c.drop(); ??????c.moveLeft(2); ??????String?str?=?c.getCellInfo();
引用類型變量的賦值
引用類型變量存儲的是對象的地址信息。相同類型的引用類型變量之間也可以相互賦值。
引用類型變量之間的賦值不會創建新的對象,但有可能會使兩個以上的引用指向同一個對象。
??????????Emp?e1?=?new?Emp(); ??????????Emp?e2?=?e1;????//將e1的值(對象的地址信息)賦給e2,e2和e1只想相同的對象。 ??????????e1.name?=?"黃河大蝦"; ??????????e2.name?=?"白發饃女"; ??????????System.out.println(e1.name);
通過引用e1和e2操作的是相同的對象
null和NullPointerException
對于引用類型變量,可以對其賦值為null。null的含義為“空”,表示還沒有指向任何對象。例如:
????Emp?emp?=?null;????//引用emp中的值為null,沒有任何對象; ????emp?=?new?Emp();????//引用emp指向了一個Emp對象;
當一個引用的值為null的時候,如果通過引用訪問對象成員變量或者調用方法是不合邏輯的。此時,會產生NullPointerException.例如:
???? ????JFrame?frame?=?null; ????frame.setSize(200,300);
會產生NullPointerException
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。