溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java學(xué)習(xí)————對象和類

發(fā)布時(shí)間:2020-07-23 03:29:05 來源:網(wǎng)絡(luò) 閱讀:152 作者:tom_fn 欄目:編程語言

面向過程的結(jié)構(gòu)化程序設(shè)計(jì)


Java學(xué)習(xí)————對象和類



結(jié)構(gòu)化程序的弊端:

1.缺乏對數(shù)據(jù)的封裝;

2.數(shù)據(jù)和方法(對數(shù)據(jù)的操作)的分離。


什么是抽象數(shù)據(jù)類型

  • 所謂抽象數(shù)據(jù)類型可以理解為:將不同類型的數(shù)據(jù)的集合組成一個(gè)整體用來描述一種新的事物;

? ? Java學(xué)習(xí)————對象和類


什么是類

  • 類定義了一種抽象數(shù)據(jù)類型。

  • 類不但定義了抽象數(shù)據(jù)類型的組成(成員變量),同時(shí)還定義了可以對該類型實(shí)施的操作(方法)。

/**定義雇員類*/
public?class?Emp{
??String?name;
??int?age;
??char?gender;
??double?salary;
??}

在此示例中,僅僅定義了Emp類型的組成,即成員變量。該類定義了4個(gè)成員變量: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)的方式初始化。

  • 初始化對象成員變量時(shí),其默認(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)建一個(gè)窗體對象。

Java學(xué)習(xí)————對象和類



引用類型變量

  • 為了能夠?qū)?shí)例化的對象進(jìn)行訪問控制,需要使用一個(gè)特殊的變量——引用。

  • -引用類型變量可以存放該類對象的地址信息,通常稱為“指向該類的對象”;當(dāng)一個(gè)引用類型變量指向該類的對象時(shí),就可以通過這個(gè)變量對對象實(shí)施訪問。

  • -除8種基本類型外,用類、接口、數(shù)組等聲明的變量都稱為引用型變量,簡稱“引用”。

  • ?Java學(xué)習(xí)————對象和類


訪問對象的成員變量、調(diào)用方法

  • 可以通過引用訪問對象的成員變量或調(diào)用方法。

??????Cell?c?=?new?Cell();
??????
??????c.row?=?2;
??????c.col?=?3;
??????
??????c.drop();
??????c.moveLeft(2);
??????String?str?=?c.getCellInfo();



引用類型變量的賦值

  • 引用類型變量存儲(chǔ)的是對象的地址信息。相同類型的引用類型變量之間也可以相互賦值。

  • 引用類型變量之間的賦值不會(huì)創(chuàng)建新的對象,但有可能會(huì)使兩個(gè)以上的引用指向同一個(gè)對象。

??????????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指向了一個(gè)Emp對象;
  • 當(dāng)一個(gè)引用的值為null的時(shí)候,如果通過引用訪問對象成員變量或者調(diào)用方法是不合邏輯的。此時(shí),會(huì)產(chǎn)生NullPointerException.例如:

????
????JFrame?frame?=?null;
????frame.setSize(200,300);

會(huì)產(chǎn)生NullPointerException




向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI