編程語言分為面向過程和面向?qū)ο笮粒鴍ava就是一種面向?qū)ο蟮木幊陶Z言部脚。
什么是面向過程編程呢?就是一流程為單位,注重最后的結(jié)果裤纹。比如小明要從鄭州去北京委刘,他第一步就是要先買火車票,然后去火車站乘車鹰椒,坐火車到北京锡移。這就是面向過程編程,必須每一步都做到吹零,才會有最后的結(jié)果罩抗。
這樣一來面向過程編程的缺點(diǎn)就很明顯了:1、不利于程序的維護(hù) 2灿椅、功能之間有很強(qiáng)的關(guān)聯(lián)性,就是說你每一次改動(dòng)一步钞支,可能就會涉及到好幾步的更改茫蛹。
那么什么又是面向?qū)ο笞兂赡兀烤褪前岩粋€(gè)事物看做一個(gè)整體烁挟,從事物的屬性和功能兩方面進(jìn)行描述
面向?qū)ο缶幊痰奶攸c(diǎn)就是:
1婴洼、面向?qū)ο蟮木幊趟枷敫N近人的正常思維模式
2、面向?qū)ο蟮木幊虂碓从谏罘?wù)于生活
3撼嗓、面向?qū)ο蟮木幊趟枷胫锌隙〞玫矫嫦蜻^程的思想
4柬采、面向?qū)ο蟮奶卣鳎撼橄蟆⒎庋b且警、繼承粉捻、多態(tài)
這就要來了解下什么是對象了。
任何一個(gè)具體的事物都是一個(gè)對象斑芜,在《java編程思想》中講到:萬事萬物皆對象
任何一個(gè)對象都是唯一的肩刃,即使兩個(gè)相近或者相似的事物都是兩個(gè)不同的對象,就像世界上找不到兩片相同的樹葉一樣杏头,任何一個(gè)對象一旦創(chuàng)建就會唯一的存在盈包。而且對象也不一定是一個(gè)切實(shí)存在的實(shí)物,任何一項(xiàng)法規(guī)醇王、政策呢燥、虛擬物品等都是一個(gè)對象。
1.抽象
就是對同一個(gè)事的共有的屬性(特征)和方法(功能/行為)進(jìn)行抽取寓娩、歸納叛氨、總結(jié)滥朱。如:汽車都有輪子、發(fā)動(dòng)機(jī)等這些就是汽車的屬性力试,汽車能跑徙邻、能載人載物等這些就是汽車的功能。這樣就可以把汽車的這些功能與屬性抽取出來寫在一個(gè)類中畸裳,供汽車這一類事物使用缰犁。
2.封裝
在抽象中將屬性與方法寫在一個(gè)類中就是封裝,而封裝就是為了保證抽象出來的特征和方法的安全性怖糊,封裝就是包裝的過程帅容,注意封裝不是絕對的封裝,如果其他程序要獲取已經(jīng)封裝好的數(shù)據(jù)伍伤,就要通過程序指定的接口或方法才能獲取并徘。
3.繼承
特點(diǎn):繼承要有一定的層次結(jié)構(gòu),還要具備一定的可傳遞性
子類繼承父類的屬性和方法扰魂,但是私有屬性和構(gòu)造方法除外
子類除了擁有從父類繼承過來的屬性和方法外麦乞,子類還可以擁有屬于自己的屬性和方法
在java中只支持單一繼承(也就說一個(gè)子類只能有一個(gè)父類,但一個(gè)父類可以有多個(gè)子類)
判斷兩個(gè)類的繼承關(guān)系是否成立劝评,可以通過“is-a”(是一個(gè))開判斷
子類不能繼承父類的構(gòu)造方法:父類的構(gòu)造方法創(chuàng)建的是父類的對象姐直,以為繼承要有一定的層次結(jié)構(gòu),而且要具備一定的額可傳遞性蒋畜,如果子類繼成父類的構(gòu)造方法就違反了這一條声畏,所以子類不能繼承父類的構(gòu)造方法。
如何實(shí)現(xiàn)繼承
在java中通過extends關(guān)鍵字來實(shí)現(xiàn)繼承姻成,語法
【訪問修飾符】 class 子類 extends 父類{ }
繼承的作用
提高代碼的重用性
一個(gè)源文件中可以包含多個(gè)類插龄,但只能有一個(gè)類帶public,而且?guī)ublic訪問修飾符的類的類名要和源文件的文件名相同科展,main方法也要寫在帶public的類中均牢。
當(dāng)創(chuàng)建子類對象時(shí),那么一定會先執(zhí)行父類的構(gòu)造方法創(chuàng)建父類對象辛润,然后在調(diào)用子類的構(gòu)造方法創(chuàng)建子類的對象膨处。而且在創(chuàng)建子類的對象時(shí)無論是調(diào)用有參數(shù)還是無參數(shù)的構(gòu)造方法,JVM都會默認(rèn)的代用父類的無參數(shù)的構(gòu)造方法創(chuàng)建父類的對象砂竖。
4.多態(tài)
多態(tài)就是指同一種事物在不同的情況下的多種表現(xiàn)形式
多態(tài)的表現(xiàn)形式有:方法重寫真椿,方法重載,接口和接口的繼承乎澄,類和類的繼承
方法的重載:在同一個(gè)類中突硝,有多個(gè)方法名相同,但參數(shù)列表不同的方法置济,這就是方法的重載解恰,參數(shù)列表的不同包括:參數(shù)個(gè)數(shù)锋八,類型,順序的不同护盈。普通方法和構(gòu)造方法都可重載挟纱,方法重載會根據(jù)傳遞的參數(shù)來決定調(diào)用哪個(gè)方法,返回值不同腐宋,其他都相同的情況是構(gòu)不成方法的重載
方法的重寫:發(fā)生在子類繼承父類的關(guān)系中紊服,父類中的方法被子類繼承,方法名胸竞,返回值類型欺嗤,參數(shù)完全一樣,但是方法體不一樣那么說明父類中的該方法被子類重寫了卫枝。
目的:當(dāng)父類中方法煎饼,無法滿足子類的需求時(shí),那么子類可以對父類的方法進(jìn)行擴(kuò)展
注意:方法重寫子類的訪問修飾符的范圍不能縮小