資源描述:
《java基礎(chǔ)教程面向?qū)ο笊稀酚蓵?huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、Java基礎(chǔ)教程第三講面向?qū)ο螅ㄉ希├斫饷嫦驅(qū)ο蟮母拍蠲嫦蜻^(guò)程在一個(gè)結(jié)構(gòu)體中定義窗口的大小,位置,顏色,背景等屬性,對(duì)窗口操作的函數(shù)與窗口本身的定義沒(méi)有任何關(guān)系,如HideWindow,MoveWindow,MinimizeWindow,這些函數(shù)都需要接受一個(gè)代表要被操作的窗口參數(shù),是一種謂語(yǔ)與賓語(yǔ)的關(guān)系。面向?qū)ο蠖x窗口時(shí),除了要指定在面向過(guò)程中規(guī)定的那些屬性,如大小,位置,顏色,背景等外,還要指定該窗口可能具有的動(dòng)作,如隱藏,移動(dòng),最小化等。這些函數(shù)被調(diào)用時(shí),都是以某個(gè)窗口要隱藏,某個(gè)窗口要移動(dòng)的語(yǔ)法格式來(lái)使用的,這是一種主語(yǔ)與謂語(yǔ)的關(guān)系。面向?qū)ο蟮娜筇卣鞣庋b(Enca
2、psulation)繼承(Inheritance)多態(tài)(Polymorphism)類(lèi)與對(duì)象類(lèi)是對(duì)某一類(lèi)事物的描述,是抽象的、概念上的定義;對(duì)象是實(shí)際存在的該類(lèi)事物的每個(gè)個(gè)體,因而也稱(chēng)實(shí)例(instance)。如果將對(duì)象比作汽車(chē),那么類(lèi)就是汽車(chē)的設(shè)計(jì)圖紙。所以面向?qū)ο蟪绦蛟O(shè)計(jì)的重點(diǎn)是類(lèi)的設(shè)計(jì),而不是對(duì)象的設(shè)計(jì)。類(lèi)的定義classPerson{intage;voidshout(){System.out.println(“oh,mygod!Iam“+age);}}age是類(lèi)的屬性,也叫類(lèi)成員變量。shout是方法也叫類(lèi)的成員函數(shù)。shout方法可以直接訪問(wèn)同一個(gè)類(lèi)中的age變量,如
3、果一個(gè)方法中有與成員變量同名的局部變量,該方法中對(duì)這個(gè)變量名的訪問(wèn)是局部變量,而不再是成員變量。對(duì)象的產(chǎn)生Personp1=newPerson();執(zhí)行完后的內(nèi)存狀態(tài)對(duì)象的產(chǎn)生當(dāng)一個(gè)對(duì)象被創(chuàng)建時(shí),會(huì)對(duì)其中各種類(lèi)型的成員變量自動(dòng)進(jìn)行初始化賦值。除了基本數(shù)據(jù)類(lèi)型之外的都是變量類(lèi)型都是引用類(lèi)型,如上面的Person及前面講過(guò)的數(shù)組。對(duì)象的使用創(chuàng)建新的對(duì)象之后,我們就可以使用“對(duì)象名.對(duì)象成員”的格式,來(lái)訪問(wèn)對(duì)象的成員(包括屬性和方法)classTestPerson{publicstaticvoidmain(String[]args){Personp1=newPerson();Per
4、sonp2=newPerson();p1.age=-30;p1.shout();p2.shout();}}上面程序運(yùn)行的內(nèi)存布局如下圖對(duì)象的生命周期對(duì)象的比較“==”運(yùn)算符與equals()方法的區(qū)別怎樣比較兩個(gè)數(shù)組對(duì)象的內(nèi)容是否相等匿名對(duì)象我們也可以不定義對(duì)象的句柄,而直接調(diào)用這個(gè)對(duì)象的方法。這樣的對(duì)象叫做匿名對(duì)象,如:newPerson().shout();如果對(duì)一個(gè)對(duì)象只需要進(jìn)行一次方法調(diào)用,那么就可以使用匿名對(duì)象。我們經(jīng)常將匿名對(duì)象作為實(shí)參傳遞給一個(gè)函數(shù)調(diào)用。實(shí)現(xiàn)類(lèi)的封裝性如果外面的程序可以隨意修改一個(gè)類(lèi)的成員變量,會(huì)造成不可預(yù)料的程序錯(cuò)誤,就象一個(gè)人的身高,不能被外
5、部隨意修改,只能通過(guò)各種攝取營(yíng)養(yǎng)的方法去修改這個(gè)屬性。在定義一個(gè)類(lèi)的成員(包括變量和方法)時(shí),使用private關(guān)鍵字說(shuō)明這個(gè)成員的訪問(wèn)權(quán)限,這個(gè)成員成了類(lèi)的私有成員,只能被這個(gè)類(lèi)的其他成員方法調(diào)用,而不能被其他的類(lèi)中的方法所調(diào)用。實(shí)現(xiàn)類(lèi)的封裝性為了實(shí)現(xiàn)良好的封裝性,我們通常將類(lèi)的成員變量聲明為private,再通過(guò)public的方法來(lái)對(duì)這個(gè)變量進(jìn)行訪問(wèn)。對(duì)一個(gè)變量的操作,一般都有讀取和賦值操作,我們分別定義兩個(gè)方法來(lái)實(shí)現(xiàn)這兩種操作,一個(gè)是getXxx()(Xxx表示要訪問(wèn)的成員變量的名字),用來(lái)讀取這個(gè)成員變量操作,另外一個(gè)是setXxx()用來(lái)對(duì)這個(gè)成員變量賦值。一個(gè)類(lèi)通
6、常就是一個(gè)小的模塊,我們應(yīng)該讓模塊僅僅公開(kāi)必須要讓外界知道的內(nèi)容,而隱藏其它一切內(nèi)容。我們?cè)谶M(jìn)行程序的詳細(xì)設(shè)計(jì)時(shí),應(yīng)盡量避免一個(gè)模塊直接修改或操作另一個(gè)模塊的數(shù)據(jù),模塊設(shè)計(jì)追求強(qiáng)內(nèi)聚(許多功能盡量在類(lèi)的內(nèi)部獨(dú)立完成,不讓外面干預(yù)),弱耦合(提供給外部盡量少的方法調(diào)用)。用總統(tǒng)指揮一支軍隊(duì)的例子來(lái)說(shuō)明這種效果。類(lèi)的封裝所帶來(lái)的優(yōu)點(diǎn)隱藏類(lèi)的實(shí)現(xiàn)細(xì)節(jié);讓使用者只能通過(guò)事先定制好的方法來(lái)訪問(wèn)數(shù)據(jù),可以方便地加入控制邏輯,限制對(duì)屬性的不合理操作;便于修改,增強(qiáng)代碼的可維護(hù)性;編程試驗(yàn):我們?cè)谝粋€(gè)類(lèi)中定義了一個(gè)private類(lèi)型的成員變量,接著產(chǎn)生了這個(gè)類(lèi)的兩個(gè)實(shí)例對(duì)象,請(qǐng)問(wèn)第一個(gè)對(duì)象的
7、方法中,能否以“第二個(gè)對(duì)象.成員”的格式訪問(wèn)第二個(gè)對(duì)象中的那個(gè)private成員變量?構(gòu)造函數(shù)的定義與作用構(gòu)造方法的特征它具有與類(lèi)相同的名稱(chēng);它不含返回值;它不能在方法中用return語(yǔ)句返回一個(gè)值注意:在構(gòu)造方法里不含返回值的概念是不同于“void”的,在定義構(gòu)造方法時(shí)加了“void”,結(jié)果這個(gè)方法就不再被自動(dòng)調(diào)用了。構(gòu)造方法的作用:當(dāng)一個(gè)類(lèi)的實(shí)例對(duì)象剛產(chǎn)生時(shí),這個(gè)類(lèi)的構(gòu)造方法就會(huì)被自動(dòng)調(diào)用,我們可以在這個(gè)方法中加入要完成初始化工作的代碼。這就好像我們規(guī)定每個(gè)“人”一出生就必須先洗澡,我們就可以在“人