Java 面向对象语言基础
面向過(guò)程 就是分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。
面向?qū)ο?是把構(gòu)成問(wèn)題事務(wù)分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)事物在整個(gè)解決問(wèn)題的步驟中的行為。
1、 區(qū)分類、對(duì)象和對(duì)象的引用
對(duì)象:對(duì)象是類的一個(gè)實(shí)例,有狀態(tài)和行為。例如,一條狗是一個(gè)對(duì)象,它的狀態(tài)有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。
類:類是一個(gè)模板,它描述一類對(duì)象的行為和狀態(tài)。
創(chuàng)建對(duì)象
對(duì)象是根據(jù)類創(chuàng)建的。在Java中,使用關(guān)鍵字new來(lái)創(chuàng)建一個(gè)新的對(duì)象。創(chuàng)建對(duì)象需要以下三步:
- 聲明:聲明一個(gè)對(duì)象,包括對(duì)象名稱和對(duì)象類型。
- 實(shí)例化:使用關(guān)鍵字new來(lái)創(chuàng)建一個(gè)對(duì)象。
- 初始化:使用new創(chuàng)建對(duì)象時(shí),會(huì)調(diào)用構(gòu)造方法初始化對(duì)象。
運(yùn)行結(jié)果
A Pet object is created. Hi, I'm Snoppy !【說(shuō)明】
- 類中的內(nèi)容統(tǒng)稱為成員 ----> 成員變量、成員方法。
- 只能通過(guò)引用名來(lái)操控對(duì)象,不能通過(guò)屬性值。如本例中的a.name、a.showMe(),均為正確寫法。
- 一個(gè)Java文件可包含多個(gè)類,但是只能存在一個(gè)public修飾的類,因?yàn)槲募仨毰cpublic類同名。若無(wú)public類,則文件取名只要滿足標(biāo)識(shí)符命名規(guī)則即可。文件中每個(gè)類(或接口),編譯后都會(huì)產(chǎn)生一個(gè)單獨(dú)的.class文件與之對(duì)應(yīng)。
- 類成員可以缺省,俗稱空類
對(duì)象和對(duì)象引用的內(nèi)存管理
1、內(nèi)存空間的自動(dòng)管理機(jī)制:基于棧的內(nèi)存管理模式
特色:??臻g的數(shù)據(jù)被系統(tǒng)自動(dòng)管理,即在函數(shù)調(diào)用時(shí)自動(dòng)創(chuàng)建數(shù)據(jù)空間,在函數(shù)運(yùn)行結(jié)束時(shí)自動(dòng)釋放數(shù)據(jù)空間。棧空間中的數(shù)據(jù)與特定函數(shù)直接相關(guān)。程序員在函數(shù)中定義的所有變量,無(wú)論是基本類型還是引用類型,均存儲(chǔ)在??臻g。
2、內(nèi)存空間的手動(dòng)管理機(jī)制:基于堆的內(nèi)存管理模式
特色:在程序中給出申請(qǐng)或釋放內(nèi)存單元的指令,可實(shí)現(xiàn)內(nèi)存單元的按需分配或釋放。其中堆是一種無(wú)結(jié)構(gòu)的內(nèi)存區(qū)域,用于執(zhí)行期間內(nèi)存單元的動(dòng)態(tài)分配和釋放。所有對(duì)象均存儲(chǔ)于堆空間。
2、 構(gòu)造函數(shù)
關(guān)于java類中的構(gòu)造方法:
-
構(gòu)造方法又被稱為構(gòu)造函數(shù)/構(gòu)造器/Constructor
-
構(gòu)造方法語(yǔ)法結(jié)構(gòu):
[修飾符列表] 構(gòu)造方法名(形式參數(shù)列表){
構(gòu)造方法體;
} -
普通方法的語(yǔ)法結(jié)構(gòu):
[修飾符列表] 返回值類型 方法名 (形式參數(shù)列表){
方法體
} -
對(duì)于構(gòu)造方法來(lái)說(shuō),“返回值類型不需要指定,并且也不能寫void,
只要寫上void,那么這個(gè)方法變成普通方法 -
構(gòu)造方法的方法名必須和類名保持一致
-
構(gòu)造方法的作用?
-構(gòu)造方法存在的意義是,通過(guò)構(gòu)造方法的調(diào)用,可以創(chuàng)建對(duì)象
-初始化實(shí)例變量的內(nèi)存空間 -
構(gòu)造方法應(yīng)該怎么調(diào)用?
-普通方法:方法修飾符中有static的時(shí)候:類名.方法名(實(shí)參列表)、方法修飾符列表中沒(méi)有static的時(shí)候:引用.方法名(實(shí)參列表)
-new 構(gòu)造方法名(實(shí)參列表) -
構(gòu)造方法調(diào)用之后,有返回值嗎?
每一個(gè)構(gòu)造方法實(shí)際上執(zhí)行結(jié)束后都有返回值,但是這個(gè)"return值;"這樣的語(yǔ)句不需要寫。構(gòu)造方法結(jié)束的時(shí)候java程序自動(dòng)返回值 并且返回值類型是構(gòu)造方法所在類的類型,由于構(gòu)造方法的返回值類型就是類本身,所以返回值類型不需要編寫 -
當(dāng)一個(gè)類中沒(méi)有定義任何構(gòu)造方法的話,系統(tǒng)默認(rèn)給該類提供一個(gè)無(wú)參數(shù)的構(gòu)造方法,這個(gè)構(gòu)造方法被稱為缺省構(gòu)造器
-
當(dāng)一個(gè)類顯示的將構(gòu)造方法定義出來(lái)了,那么系統(tǒng)不再默認(rèn)為這個(gè)類提供缺省構(gòu)造器。建議手動(dòng)提供
-
構(gòu)造方法支持重載機(jī)制。在一個(gè)類當(dāng)中編寫多個(gè)構(gòu)造方法,這多個(gè)構(gòu)造方法顯然已經(jīng)構(gòu)成方法重載機(jī)制
運(yùn)行結(jié)果
帶有int類型參數(shù)的構(gòu)造器
帶有String類型的構(gòu)造器
帶有int,String類型的構(gòu)造器
do some!
do some!
do other!
運(yùn)行結(jié)果
構(gòu)造函數(shù) P() 被執(zhí)行!
構(gòu)造函數(shù) B() 被執(zhí)行!
構(gòu)造函數(shù) C() 被執(zhí)行!
顯然,若要構(gòu)造出C的對(duì)象,必須先構(gòu)造出其源自超類B的對(duì)象部分。同理,要構(gòu)造出B的對(duì)象,則應(yīng)先構(gòu)造出A的對(duì)象部分。這說(shuō)明在構(gòu)造子類時(shí),會(huì)自動(dòng)調(diào)用超類的構(gòu)造函數(shù),調(diào)用次序與派生次序相同。
? 空指針引用
所謂空指針引用,就是當(dāng)引用變量未關(guān)聯(lián)任何對(duì)象時(shí),卻引用其成員。
? 相等判斷
對(duì)象相等有兩層含義:
1)兩對(duì)象實(shí)為同一對(duì)象,即對(duì)象的起始地址相同;
2)兩對(duì)象不是同一對(duì)象,但對(duì)象的特定屬性值對(duì)應(yīng)相等。
總結(jié)
以上是生活随笔為你收集整理的Java 面向对象语言基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 个人博客网站 Welcome All
- 下一篇: Java 的发展(历史)轨迹和历史变迁