面向過程的結(jié)構(gòu)化程序設(shè)計
創(chuàng)新新互聯(lián),憑借10余年的網(wǎng)站設(shè)計、做網(wǎng)站經(jīng)驗,本著真心·誠心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計網(wǎng)站有超過千家案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)建站。
結(jié)構(gòu)化程序的弊端:
1.缺乏對數(shù)據(jù)的封裝;
2.數(shù)據(jù)和方法(對數(shù)據(jù)的操作)的分離。
什么是抽象數(shù)據(jù)類型
所謂抽象數(shù)據(jù)類型可以理解為:將不同類型的數(shù)據(jù)的集合組成一個整體用來描述一種新的事物;
? ?
什么是類
類定義了一種抽象數(shù)據(jù)類型。
類不但定義了抽象數(shù)據(jù)類型的組成(成員變量),同時還定義了可以對該類型實(shí)施的操作(方法)。
/**定義雇員類*/ public?class?Emp{ ??String?name; ??int?age; ??char?gender; ??double?salary; ??}
在此示例中,僅僅定義了Emp類型的組成,即成員變量。該類定義了4個成員變量:String類型的name用于存放名字;int類型的age用于存放年齡;char類型的gender用于存放性別;double類型的salary用于存放工資。
定義了Emp類以后,提升了代碼的模塊化以及代碼的重用性,但程序依然存在問題
-打印信息的方法是只能針對Emp數(shù)據(jù)操作,屬于Emp自身的方法,需要實(shí)現(xiàn)數(shù)據(jù)和方法(對該類數(shù)據(jù)的操作)的統(tǒng)一。
定義類的成員變量
類的定義包括“成員變量”的定義和“方法”的定義,其中“成員變量”用于描述該類型對象共同的數(shù)據(jù)結(jié)構(gòu)。
Java語言中,類的成員變量的定義可以使用如下語法:
? ? ? ? ? ? class? 類名{
? ? ? ? ? ? ? ? 成員變量類型? 變量名稱;
? ? ? ? ? ? ? ? ? ... ... ...
? ? ? ? ? ? ? ? }
對象創(chuàng)建后,其成員變量可以按照默認(rèn)的方式初始化。
初始化對象成員變量時,其默認(rèn)值的規(guī)則如下表所示:
成員變量的類型 | 默認(rèn)初始值 |
數(shù)值類型(byte、shout、int、long、float、double) | 0 |
boolean型 | false |
char型 | /u0000 |
引用類型 | null |
定義類的方法
類中除了定義成員變量,還可以定義方法,用于描述對象的行為,封裝對象的功能。
Java語言中,可以按照如下方式定義類中的方法:
? ? ? ? ? ?class? 類名{
? ? ? ? ? ? ? ? 修飾詞? 返回值類型? 方法名稱([參數(shù)列表]) {
? ? ? ? ? ? ? ? ? ?方法體... ... ...
? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ?... ... ...
? ? ? ? ? ? }
使用new關(guān)鍵字創(chuàng)建對象
類定義完成后,可以使用new關(guān)鍵字創(chuàng)建對象。創(chuàng)建對象的過程稱為實(shí)例化。
new運(yùn)算的語法為:
? ? ? ?new? 類名();
? ? ? ?例如:new JFrame()可以創(chuàng)建一個窗體對象。
引用類型變量
為了能夠?qū)?shí)例化的對象進(jìn)行訪問控制,需要使用一個特殊的變量——引用。
-引用類型變量可以存放該類對象的地址信息,通常稱為“指向該類的對象”;當(dāng)一個引用類型變量指向該類的對象時,就可以通過這個變量對對象實(shí)施訪問。
-除8種基本類型外,用類、接口、數(shù)組等聲明的變量都稱為引用型變量,簡稱“引用”。
?
訪問對象的成員變量、調(diào)用方法
可以通過引用訪問對象的成員變量或調(diào)用方法。
??????Cell?c?=?new?Cell(); ?????? ??????c.row?=?2; ??????c.col?=?3; ?????? ??????c.drop(); ??????c.moveLeft(2); ??????String?str?=?c.getCellInfo();
引用類型變量的賦值
引用類型變量存儲的是對象的地址信息。相同類型的引用類型變量之間也可以相互賦值。
引用類型變量之間的賦值不會創(chuàng)建新的對象,但有可能會使兩個以上的引用指向同一個對象。
??????????Emp?e1?=?new?Emp(); ??????????Emp?e2?=?e1;????//將e1的值(對象的地址信息)賦給e2,e2和e1只想相同的對象。 ??????????e1.name?=?"黃河大蝦"; ??????????e2.name?=?"白發(fā)饃女"; ??????????System.out.println(e1.name);
通過引用e1和e2操作的是相同的對象
null和NullPointerException
對于引用類型變量,可以對其賦值為null。null的含義為“空”,表示還沒有指向任何對象。例如:
????Emp?emp?=?null;????//引用emp中的值為null,沒有任何對象; ????emp?=?new?Emp();????//引用emp指向了一個Emp對象;
當(dāng)一個引用的值為null的時候,如果通過引用訪問對象成員變量或者調(diào)用方法是不合邏輯的。此時,會產(chǎn)生NullPointerException.例如:
???? ????JFrame?frame?=?null; ????frame.setSize(200,300);
會產(chǎn)生NullPointerException