資源描述:
《java就業(yè)培訓教程第三章 面向?qū)ο?上)new》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、第3章面向?qū)ο螅ㄉ希?.1面向?qū)ο蟮母拍蠲嫦驅(qū)ο笫橇畲蠖鄶?shù)人都只可意會,難以言宣的大概念。我下面的講解主要是沖著幫你迅速理解面向?qū)ο蟮膬?nèi)涵而來的,不見得非常嚴謹和完全正確,但我個人認為是合理的,是我的體會和認識,我也曾經(jīng)用過同樣的方式,讓許多人仿佛一下子就明白了什么是面向?qū)ο?。什么是面向?qū)ο?,這是一個相對概念,是相對面向過程而言的。就象要理解什么是幸福,要先理解什么是痛苦一樣的道理,在講解面向?qū)ο笾?,我要先簡單介紹一下什么是面向過程。3.1.1面向過程在早期出現(xiàn)的編程語言中,如大家都非常熟悉的C語言,當我們要用這種語言來定
2、義一個復雜的數(shù)據(jù)類型,譬如Windows窗口時,可以用結(jié)構(gòu)體(struct)來實現(xiàn),只要在結(jié)構(gòu)體中使用那些基本的數(shù)據(jù)類型來定義窗口的大小,位置,顏色,背景等屬性就可以了。如果我們要對一個Windows窗口進行各種操作,如隱藏窗口,移動窗口,最小化窗口等等,我們要為每個操作都定義一個函數(shù),這些函數(shù)與窗口本身的定義沒有任何關系,如HideWindow,MoveWindow,MinimizeWindow,這些函數(shù)都需要接受一個參數(shù),即要操作的窗口。這是一種謂語與賓語的關系,“隱藏”、“移動”等是謂語,“窗口”是賓語。程序的重心集中
3、在函數(shù)(即謂語)上。3.1.2面向?qū)ο笤贑++,java語言中,我們可以將一個窗口當作一個主體(對象)來看,定義窗口時,除了要指定在面向過程中規(guī)定的那些屬性,如大小,位置,顏色,背景等外,還要指定該窗口可能具有的動作,如隱藏,移動,最小化等。我們在定義窗口時,就要定義好對應這些動作的函數(shù)(也叫方法),如Hide,Move,Minimize,注意體會這些函數(shù)名稱與上面的名稱的區(qū)別,這是作者刻意這么安排的,讓讀者更好地去對比,從函數(shù)名稱上就能看出,這些函數(shù)都不再接受代表窗口的參數(shù)。這些函數(shù)被調(diào)用時,都是以某個窗口要隱藏,某個窗口
4、要移動,某個窗口要最小化的語法格式來使用的。這是一種主語與謂語的關系,程序的重點集中在主體/對象(主語)上。雖然讀者在下面的講解中能夠發(fā)現(xiàn)面向?qū)ο蟮闹R遠不止這一點(剛才講的只是面向?qū)ο蟮囊粋€方面,即封裝性,用類封裝了數(shù)據(jù)與函數(shù)),真正能體現(xiàn)面向?qū)ο蟮膹姶髢?yōu)勢的地方,是在面向?qū)ο蟮睦^承與多態(tài)性方面,但作者認為,封裝性是面向?qū)ο蟮母春妥罡镜膶傩?。Java類同其他面向?qū)ο蟮木幊陶Z言一樣,也支持面向?qū)ο?OOP)的三個特征:u封裝(Encapsulation)u繼承(Inheritance)u多態(tài)(Polymorphism)要
5、想領悟面向?qū)ο蟮乃枷?,不能把學習重點放在術語的死記硬背上,形而上學,而應該把精力主要放在實踐和思考上,通過大量實踐去理解和掌握。如果讀者到現(xiàn)在還不能完全明白面向?qū)ο笫鞘裁?,也沒關系,學完下面的內(nèi)容后,再回過頭來看吧!1063.2類與對象面向?qū)ο蟮木幊趟枷肓D使在計算機語言中對事物的描述與現(xiàn)實世界中該事物的本來面目盡可能的一致,類(class)和對象(object)就是面向?qū)ο蠓椒ǖ暮诵母拍?。類是對某一類事物的描述,是抽象的、概念上的定義;對象是實際存在的該類事物的個體,因而也稱實例(instance)。如圖3.1所示就是一個
6、典型的說明:圖3.1其中,汽車設計圖就是“類”,由這個圖紙設計出來的若干的汽車就是按照該類產(chǎn)生的“對象”??梢?,類描述了對象的屬性和對象的行為,類是對象的模板、圖紙。對象(Object)是類(Class)的一個實例(Instance),是一個實實在在的個體,一個類可以對應多個對象。如果將對象比作汽車,那么類就是汽車的設計圖紙。所以面向?qū)ο蟪绦蛟O計的重點是類的設計,而不是對象的設計。同一個類按同種方法產(chǎn)生出來多個對象,剛開始的狀態(tài)都應該是一樣的,好比按照“奔馳s600”型設計圖紙生產(chǎn)出來的汽車剛開始都是一樣的,其中一輛“奔馳s
7、600”汽車被改裝后,是不會影響到同型號的其他“奔馳s600”汽車的。但如果修改了“奔馳s600”型的設計圖紙,就會影響到以后所有出廠的“奔馳s600”汽車。3.2.1類的定義類可以將數(shù)據(jù)和函數(shù)封裝在一起,其中數(shù)據(jù)表示類的屬性,函數(shù)表示類的行為。定義類就是要定義類的屬性與行為(方法)。請看這段代碼:classPerson{intage;voidshout(){System.out.println(“oh,mygod!myageis“+age);}}106其中,定義了一個Person類,該類有一個屬性age,一個方法shout
8、。類的屬性也叫類成員變量,類的方法也叫類的成員函數(shù)。一個類中的方法可以直接訪問同類中的任何成員(包括成員變量和成員函數(shù)),如shout方法可以直接訪問同一個類中的age變量。M腳下留心:如果一個方法中有與成員變量同名的局部變量,該方法中對這個變量名的訪問是局部變量,而不再是成員變量。如:c