Java程序設(shè)計-第4章課件_第1頁
Java程序設(shè)計-第4章課件_第2頁
Java程序設(shè)計-第4章課件_第3頁
Java程序設(shè)計-第4章課件_第4頁
Java程序設(shè)計-第4章課件_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第四章面向?qū)ο螅ㄉ希?/p>

第四章面向?qū)ο螅ㄉ希?什么是抽象類與對象及其關(guān)系類中定義的屬性(域)與方法(操作)對象構(gòu)造方法類成員屬性和方法的其它修飾符包(Package)

主要內(nèi)容什么是抽象主要內(nèi)容2什么是抽象什么是抽象3抽象的定義抽象(abstraction)是從被研究對象中舍棄個別的、非本質(zhì)的、或與研究主旨無關(guān)的次要特征,而抽取與研究有關(guān)的共性內(nèi)容加以考察,形成對研究問題正確的簡明扼要的認(rèn)識。動物經(jīng)過人類抽象用一個叫”動物”的類來概括抽象的定義抽象(abstraction)是從被研究對象中舍棄4類與對象及其關(guān)系

類與對象及其關(guān)系5類與對象及其關(guān)系對象是對客觀事物的抽象。類是對對象的抽象,在語言中是一種抽象的數(shù)據(jù)類型。類的定義在Java中可簡述為

class類名{}它們的關(guān)系是,對象是類的實例,類是對象的模板。

類與對象及其關(guān)系對象是對客觀事物的抽象。6類中定義的屬性與方法

類中定義的屬性與方法7類中定義的屬性(域)與方法(操作)類和對象都有屬性和操作,屬性是事物靜態(tài)特征的抽象,操作是事物動態(tài)特征的抽象。如【例4.1】classFighterPlane{Stringname;intmissileNum;voidfire(){if(missileNum>0){missileNum-=1;System.out.println(“nowfireamissile!”);}else{System.out.println(“Nomissileleft!”);}}}類的屬性或稱為“域”類的方法類中定義的屬性(域)與方法(操作)類和對象都有屬性和操作,8類中的域變量和方法存在以下關(guān)系類中定義的域變量可以被類中所有的方法所訪問。方法中的形式參數(shù)和定義的局部變量的作用域僅限于方法,局部變量在使用前必須進(jìn)行賦值初始化。如果局部變量和類中的屬性變量重名,則在方法中對同名變量改變的是局部變量。類中定義的方法可以進(jìn)行遞歸調(diào)用【例4.2】類中的域變量和方法存在以下關(guān)系類中定義的域變量可以被類中所有9Java的類一個Java類形式上包含兩個部分:類首說明類體

Java的類一個Java類形式上包含兩個部分:10類首說明

類首說明的形式如下:

[修飾符]class類名[extends超類名][implements接口名列表]類的修飾符有private、public、abstract

、final。一個類可以同時有多個修飾符,但是不能有相同的修飾符。當(dāng)一個類有多個修飾符時,這些修飾符無先后順序之分,可以任意的順序排列它們。注意:

abstract和final不能同時作為一個類的修飾符。private(私有):修飾的類只能被同一包名中的類訪問,這是Java默認(rèn)方式;public(公共):修飾的類能被所有的類訪問;abstract(抽象):修飾的類不能被實例化,它包含有未實現(xiàn)的方法。final(最終):修飾的類不能被繼承,即不能有子類。類名是所創(chuàng)建的類的名字,類名可以是任意的Java標(biāo)識符,根據(jù)Java命名的約定,類名的每個有意義的單詞的首字母要大寫,其余字母小寫。extends(繼承):保留字用來表明新創(chuàng)建的類繼承哪個類,被繼承的類稱為此類的超類。extends后面只能跟一個超類名稱。implements(實現(xiàn)):用來表明這個類實現(xiàn)了哪些接口,接口名可以有多個。

類首說明類首說明的形式如下:11類體

類體中定義了該類所有的成員變量和該類所支持的方法,其形式說明如下:類體{[成員變量說明][構(gòu)造方法說明][靜態(tài)初始化說明][方法說明]}類體由成員變量說明、構(gòu)造方法說明、靜態(tài)初始化說明和方法說明構(gòu)成,它們都是可選的。類體中的這四種說明沒有先后順序之分,但是為了類的可讀性,建議按照上面出現(xiàn)的順序說明。類體類體中定義了該類所有的成員變量和該類所支持的方法,其形12成員變量說明及其使用1.成員變量說明成員變量的說明類似于方法的局部變量說明,所不同的是,成員變量定義在類中,是類成員的一部分,整個類都可以訪問它。Java中成員變量說明形式如下:[修飾符]成員變量類型成員變量名列表;

成員變量的修飾符有以下幾種:缺省訪問修飾符、public、protected、private、final、static、transient和volatile。成員變量說明及其使用1.成員變量說明13(1)缺省訪問修飾符

缺省訪問修飾符的成員變量可以被同一包(package)中的任何類訪問。(2)public(公共)

public修飾的成員變量可以被項目文件中的任何方法所訪問。由于public成員變量不受限制,這易使類的對象引起不希望的修改,建議成員變量盡量不要使用public修飾符。(3)protected(受保護(hù))

protected修飾的成員變量可以被有繼承關(guān)系的類自由訪問,即子類可以訪問它。(4)private(私有)

private修飾的成員變量只能在同一個類中使用。這種方式通常是最為安全的。(5)static(靜態(tài)):(類變量)

static修飾的成員變量又稱為類變量。不加static修飾的成員變量又叫對象變量。對象變量依附于具體的對象實例,它的值因具體對象實例的不同而不同,而類變量為該類的所有對象共享,它的值不因類的對象不同而不同。(6)final(最終):(常量)final修飾的成員變量叫最終成員變量。一開始創(chuàng)建該變量時將其設(shè)定了一個值,在以后程序的運行過程當(dāng)中,變量的值將一直保持這個值不變。最終變量又稱為常量。Java中的常量必須是類的成員。對于最終成員變量,任何賦值都將導(dǎo)致編譯錯誤。因為常量在說明以后就不能改變其值,所以常量必須要使用變量初始化來賦初值。無論是實例變量,還是類變量,都可以被說明成常量。final修飾符和static修飾符并不沖突。成員變量類型可以是基本類型或類。成員變量名使用符合Java規(guī)定的標(biāo)識符來表示。(1)缺省訪問修飾符14成員變量使用

類的成員變量在定義它的類內(nèi)部,直接通過成員變量名來訪問。如從類的外部訪問,類變量和類對象變量的使用方法是不同。使用類變量的格式如下:

類名.類變量名由此可見,訪問類變量與類的對象構(gòu)造和對象都無關(guān)。訪問類對象變量的格式如下:類對象名.類對象變量名由此可見,要使用對象變量首先要構(gòu)造對象,獲得類對象名。類對象名即對應(yīng)的類變量名。成員變量使用類的成員變量在定義它的類內(nèi)部,直接通過成員變量15例4-1成員變量的訪問classPoint{finalstaticPointorigin=newPoint(0,0);//定義一個類變量,常量,origin為坐標(biāo)原點intx;inty;Point(intx,inty){thisx=x;this.y=y;}}publicclassUsingStatic{publicstaticvoidmain(Stringargs[]){Pointp1=Point(10,20);//構(gòu)造類Point的對象p1Pointp2=Point(310,120);System.out.println(″類Point中的類變量:″);System.out.println(″(″+Point.origin.x+″,″+Point.origin.y+″)″);//訪問類變量(類名.類變量名)

System.out.println(″類Point中的類實例變量:″);System.out.println(″(″+p1.x+″,″+p1..y+″)″);//訪問類對象變量x、y,p1是類對象名(類對象名.類對象變量名)}}例4-1成員變量的訪問16迪米特法則LawofDemeter1987,NortheasternUniversity火星登陸軟件,木星歐羅巴衛(wèi)星軌道飛船軟件系統(tǒng)Don’ttalktostrangers迪米特法則LawofDemeter17對象對象18對象的產(chǎn)生NEW類對象對象的產(chǎn)生使用的代碼:newFighterPlane();對象的聲明使用的代碼:FighterPlanefp;對象的產(chǎn)生NEW類對象對象的產(chǎn)生使用的代碼:new19NEW類對象可以聲明后立即賦予對象:FighterPlanefp=newFighterPlane()NEW類對象可以聲明后立即賦予對象:FighterPlane20對象內(nèi)存空間分布當(dāng)“FighterPlanefp=newFighterPlane()”處于某個方法中時:對象內(nèi)存空間分布當(dāng)“FighterPlanefp=n21對象作為參數(shù)的特點普通數(shù)據(jù)類型作為參數(shù)傳遞是值傳遞,【例4.3】。對象是引用傳遞。a對象s對象as【例4.4】【例4.5】對象作為參數(shù)的特點普通數(shù)據(jù)類型作為參數(shù)傳遞是值傳遞,【例422對象數(shù)組MyClass[]mc=newMyClass[10];數(shù)組對象特點及常用方法具有對象引用的特點,例【4.6】屬性length的用法,例【4.7】對象數(shù)組MyClass[]mc=newMyClas23構(gòu)造方法構(gòu)造方法24構(gòu)造方法的含義,【例4.8】構(gòu)造方法的特征,【例4.9】、【4.10】構(gòu)造方法的注意事項finalize方法與垃圾回收

什么是垃圾對象?垃圾對象何時回收?垃圾對象回收時調(diào)用finalize方法。構(gòu)造方法的含義,【例4.8】構(gòu)造方法的特征,【例4.9】、25構(gòu)造方法說明

每當(dāng)由類構(gòu)造對象時都要調(diào)用該類特定的構(gòu)造方法,在Java中,每個類都至少有一個構(gòu)造方法。構(gòu)造方法可以確保用戶正確地構(gòu)造類的對象,同時,構(gòu)造方法也會對對象作初始化工作。構(gòu)造方法說明形式如下:

[構(gòu)造方法修飾符]方法名([形式參數(shù)列表])[throws異常列表]方法體構(gòu)造方法修飾符與一般方法修飾符相同,讀者參見4.3.3小節(jié)。

構(gòu)造方法不能像一般的方法那樣被直接調(diào)用,它是在構(gòu)造類的實例的時候被Java編譯器自動調(diào)用的。當(dāng)我們構(gòu)造一個類的實例的時候,編譯器主要完成以下三件事情:(1)為對象分配內(nèi)存空間;(2)初始化對象中的實例變量的值,初始值可以是缺省值,或者變量按指定的值初始化;(3)調(diào)用對象的構(gòu)造方法。一個類的構(gòu)造方法可以有多個,它們都具有相同的方法名,即類名。編譯器根據(jù)參數(shù)的類型來決定調(diào)用哪個構(gòu)造方法。構(gòu)造方法分為缺省的構(gòu)造方法(不帶參數(shù))和帶參數(shù)的構(gòu)造方法。構(gòu)造方法說明每當(dāng)由類構(gòu)造對象時都要調(diào)用該類特定的構(gòu)造方法,26缺省的構(gòu)造方法

如果類的定義沒有編制構(gòu)造方法,Java語言會自動為用戶提供。這個由Java自動提供的構(gòu)造方法就是所謂的缺省構(gòu)造方法。缺省的構(gòu)造方法確保每個Java類都至少有一個構(gòu)造方法,該方法應(yīng)符合類的定義。例如在例4-1的類Point中,如果我們沒有定義構(gòu)造方法,則Java自動提供了一個缺省的構(gòu)造方法,如下:缺省的構(gòu)造方法:publicPoint(){};//對象成員變量的初值按Java規(guī)定

缺省的構(gòu)造方法如果類的定義沒有編制構(gòu)造方法,Java語言會27帶參數(shù)的構(gòu)造方法

帶有參數(shù)的構(gòu)造方法能夠?qū)崿F(xiàn)這樣的功能:當(dāng)構(gòu)造一個新對象時,類構(gòu)造方法可以按需要將一些指定的參數(shù)傳遞給構(gòu)造方法。如:publicPoint(intx,inty){this.x=x;this.y=y;}帶參數(shù)的構(gòu)造方法帶有參數(shù)的構(gòu)造方法能夠?qū)崿F(xiàn)這樣的功能:當(dāng)構(gòu)28類成員屬性和方法的非訪問修飾符類成員屬性和方法的非訪問修飾符29方法說明

在Java中,方法總是Java類的一個組成部分。通過類的方法,改變對象的狀態(tài)。方法說明的格式如下:方法首部說明方法體方法說明分為方法首部說明和方法體兩部分。方法說明在Java中,方法總是Java類的一個組成部分。通30方法修飾符包括以下幾種:public修飾的方法可以由其他類訪問;protected修飾的方法只能由繼承關(guān)系的類訪問;private修飾的方法只能由說明該方法的類訪問;static修飾的方法為靜態(tài)方法,又叫類方法;無static修飾的方法為對象方法。類方法是該類的所有對象共享的方法。abstract修飾的方法為抽象方法,無其方法體;final修飾的方法為最終方法,不能由子類改變;synchronized(同步)修飾的方法執(zhí)行之前給方法設(shè)置同步機制,實現(xiàn)線程同步;native修飾的方法為本地方法,即方法實現(xiàn)與本機系統(tǒng)有關(guān)。方法修飾符包括以下幾種:31方法名是Java中任意的標(biāo)識符。按照命名的約定,方法名應(yīng)該是有意義的動詞或動詞短語,它的第一個字母一般要小寫,其他有意義的單詞的首字母要大寫,其余字母小寫。返回值類型可以是任意的Java類型,甚至可以是定義此方法的類。如果方法沒有返回值,則用void表示。形式參數(shù)列表是可選的。如果方法沒有形式參數(shù),就用一對小括號“()”表示。形式參數(shù)列表的形式如下:(類型形參名,類型形參名,……)throws異常列表規(guī)定了在方法執(zhí)行中可能導(dǎo)致的異常。第5章會詳細(xì)介紹。方法名是Java中任意的標(biāo)識符。按照命名的約定,方法名應(yīng)該是324.3.3.2方法體方法體是實現(xiàn)這個方法的代碼段,它由“{”和“}”括起來的語句序列構(gòu)成。方法體也可以是一個分號“;”,表示無方法體,該類沒有實現(xiàn)。當(dāng)且僅當(dāng)方法的修飾符中有abstract或native時,方法才無方法體。4.3.3.2方法體33方法的調(diào)用類方法調(diào)用形式如下:類名.類靜態(tài)方法名(實參列表)對象方法調(diào)用形式如下:類對象名.類非靜態(tài)方法名(實參列表)前面的例子中經(jīng)常使用到類方法,應(yīng)用程序中的主方法main就是類方法。類方法和類變量一樣,都是對整個類而言的,而不是針對類的對象。一些通用的、公用型的方法不能直接作用在類的對象,因此常常被作為類方法實現(xiàn)。Java類庫中Math類,其中多數(shù)的數(shù)學(xué)運算的操作都被定義成靜態(tài)方法。因此,一些通用的、公用型的方法可以使用類方法把它們放在合適的類中,從而很好地將它們組織起來。方法的調(diào)用類方法調(diào)用形式如下:34關(guān)于類方法的使用,有如下一些限制:(1)在類方法中不能引用對象變量。(2)在類方法中不能使用super、this關(guān)鍵字(super、this介紹見后)。(3)類方法不能調(diào)用類中的對象方法。如果違反這些限制,你的程序就會導(dǎo)致編譯錯誤。與類方法相比,對象方法幾乎沒有什么限制:(1)對象方法可以引用對象變量(這是顯然的),也可以引用類變量(甚至一個對象變量都不引用)。(2)對象方法中可以使用supper、this關(guān)鍵字。(3)對象方法中可以調(diào)用類方法。如果包含類方法的類被繼承,那么其子類中既可以使用帶有超類名的限定名來訪問該類方法,也可以使用子類名的限定名來訪問該類方法。關(guān)于類方法的使用,有如下一些限制:35static用static修飾符修飾的數(shù)據(jù)成員是不屬于任何一個類的具體對象,而是屬于類的靜態(tài)數(shù)據(jù)成員。它被保存在類的內(nèi)存區(qū)的公共存儲單元中,而不是保存在某個對象的內(nèi)存區(qū)中。因此,一個類的任何對象訪問它時,存取到的都是相同的數(shù)值。訪問方式為通過類名加點操作符來訪問,也可通過對象引用來訪問。static用static修飾符修飾的數(shù)據(jù)成員是不屬于任何36Static修飾的方法有如下特點:static方法是類方法,但可以被所有對象所訪問,引用這個方法時,可以使用對象名做前綴,也可以使用類名做前綴。static方法內(nèi)部的代碼,只能訪問類中的static屬性或方法,不能訪問類中的非static屬性或方法(因為那是對象方法),但非static方法(對象方法)可以訪問static數(shù)據(jù)成員。main方法是特殊的靜態(tài)方法,是Application程序入口點,必須寫成publicstaticvoidmain(Stringargs[])的形式。Static修飾的方法有如下特點:static方法是類方法,37finalfinal修飾屬性,則屬性為常量(全部大寫);

如果修飾方法,則方法稱為最終方法,在子類當(dāng)中不能被覆蓋,可防止任何繼承類修改此方法。

abstract與nativefinalfinal修飾屬性,則屬性為常量(全部大寫);38包(Package)包(Package)39包(Package)隨著Java的應(yīng)用,SUN公司的JDK,各系統(tǒng)開發(fā)商,以及自己開發(fā)的類越來越多,如何對這些類進(jìn)行有效的組織管理和有效使用,Java的解決辦法是“包”。包(Package)隨著Java的應(yīng)用,SUN公司的J40第四章面向?qū)ο螅ㄉ希?/p>

第四章面向?qū)ο螅ㄉ希?1什么是抽象類與對象及其關(guān)系類中定義的屬性(域)與方法(操作)對象構(gòu)造方法類成員屬性和方法的其它修飾符包(Package)

主要內(nèi)容什么是抽象主要內(nèi)容42什么是抽象什么是抽象43抽象的定義抽象(abstraction)是從被研究對象中舍棄個別的、非本質(zhì)的、或與研究主旨無關(guān)的次要特征,而抽取與研究有關(guān)的共性內(nèi)容加以考察,形成對研究問題正確的簡明扼要的認(rèn)識。動物經(jīng)過人類抽象用一個叫”動物”的類來概括抽象的定義抽象(abstraction)是從被研究對象中舍棄44類與對象及其關(guān)系

類與對象及其關(guān)系45類與對象及其關(guān)系對象是對客觀事物的抽象。類是對對象的抽象,在語言中是一種抽象的數(shù)據(jù)類型。類的定義在Java中可簡述為

class類名{}它們的關(guān)系是,對象是類的實例,類是對象的模板。

類與對象及其關(guān)系對象是對客觀事物的抽象。46類中定義的屬性與方法

類中定義的屬性與方法47類中定義的屬性(域)與方法(操作)類和對象都有屬性和操作,屬性是事物靜態(tài)特征的抽象,操作是事物動態(tài)特征的抽象。如【例4.1】classFighterPlane{Stringname;intmissileNum;voidfire(){if(missileNum>0){missileNum-=1;System.out.println(“nowfireamissile!”);}else{System.out.println(“Nomissileleft!”);}}}類的屬性或稱為“域”類的方法類中定義的屬性(域)與方法(操作)類和對象都有屬性和操作,48類中的域變量和方法存在以下關(guān)系類中定義的域變量可以被類中所有的方法所訪問。方法中的形式參數(shù)和定義的局部變量的作用域僅限于方法,局部變量在使用前必須進(jìn)行賦值初始化。如果局部變量和類中的屬性變量重名,則在方法中對同名變量改變的是局部變量。類中定義的方法可以進(jìn)行遞歸調(diào)用【例4.2】類中的域變量和方法存在以下關(guān)系類中定義的域變量可以被類中所有49Java的類一個Java類形式上包含兩個部分:類首說明類體

Java的類一個Java類形式上包含兩個部分:50類首說明

類首說明的形式如下:

[修飾符]class類名[extends超類名][implements接口名列表]類的修飾符有private、public、abstract

、final。一個類可以同時有多個修飾符,但是不能有相同的修飾符。當(dāng)一個類有多個修飾符時,這些修飾符無先后順序之分,可以任意的順序排列它們。注意:

abstract和final不能同時作為一個類的修飾符。private(私有):修飾的類只能被同一包名中的類訪問,這是Java默認(rèn)方式;public(公共):修飾的類能被所有的類訪問;abstract(抽象):修飾的類不能被實例化,它包含有未實現(xiàn)的方法。final(最終):修飾的類不能被繼承,即不能有子類。類名是所創(chuàng)建的類的名字,類名可以是任意的Java標(biāo)識符,根據(jù)Java命名的約定,類名的每個有意義的單詞的首字母要大寫,其余字母小寫。extends(繼承):保留字用來表明新創(chuàng)建的類繼承哪個類,被繼承的類稱為此類的超類。extends后面只能跟一個超類名稱。implements(實現(xiàn)):用來表明這個類實現(xiàn)了哪些接口,接口名可以有多個。

類首說明類首說明的形式如下:51類體

類體中定義了該類所有的成員變量和該類所支持的方法,其形式說明如下:類體{[成員變量說明][構(gòu)造方法說明][靜態(tài)初始化說明][方法說明]}類體由成員變量說明、構(gòu)造方法說明、靜態(tài)初始化說明和方法說明構(gòu)成,它們都是可選的。類體中的這四種說明沒有先后順序之分,但是為了類的可讀性,建議按照上面出現(xiàn)的順序說明。類體類體中定義了該類所有的成員變量和該類所支持的方法,其形52成員變量說明及其使用1.成員變量說明成員變量的說明類似于方法的局部變量說明,所不同的是,成員變量定義在類中,是類成員的一部分,整個類都可以訪問它。Java中成員變量說明形式如下:[修飾符]成員變量類型成員變量名列表;

成員變量的修飾符有以下幾種:缺省訪問修飾符、public、protected、private、final、static、transient和volatile。成員變量說明及其使用1.成員變量說明53(1)缺省訪問修飾符

缺省訪問修飾符的成員變量可以被同一包(package)中的任何類訪問。(2)public(公共)

public修飾的成員變量可以被項目文件中的任何方法所訪問。由于public成員變量不受限制,這易使類的對象引起不希望的修改,建議成員變量盡量不要使用public修飾符。(3)protected(受保護(hù))

protected修飾的成員變量可以被有繼承關(guān)系的類自由訪問,即子類可以訪問它。(4)private(私有)

private修飾的成員變量只能在同一個類中使用。這種方式通常是最為安全的。(5)static(靜態(tài)):(類變量)

static修飾的成員變量又稱為類變量。不加static修飾的成員變量又叫對象變量。對象變量依附于具體的對象實例,它的值因具體對象實例的不同而不同,而類變量為該類的所有對象共享,它的值不因類的對象不同而不同。(6)final(最終):(常量)final修飾的成員變量叫最終成員變量。一開始創(chuàng)建該變量時將其設(shè)定了一個值,在以后程序的運行過程當(dāng)中,變量的值將一直保持這個值不變。最終變量又稱為常量。Java中的常量必須是類的成員。對于最終成員變量,任何賦值都將導(dǎo)致編譯錯誤。因為常量在說明以后就不能改變其值,所以常量必須要使用變量初始化來賦初值。無論是實例變量,還是類變量,都可以被說明成常量。final修飾符和static修飾符并不沖突。成員變量類型可以是基本類型或類。成員變量名使用符合Java規(guī)定的標(biāo)識符來表示。(1)缺省訪問修飾符54成員變量使用

類的成員變量在定義它的類內(nèi)部,直接通過成員變量名來訪問。如從類的外部訪問,類變量和類對象變量的使用方法是不同。使用類變量的格式如下:

類名.類變量名由此可見,訪問類變量與類的對象構(gòu)造和對象都無關(guān)。訪問類對象變量的格式如下:類對象名.類對象變量名由此可見,要使用對象變量首先要構(gòu)造對象,獲得類對象名。類對象名即對應(yīng)的類變量名。成員變量使用類的成員變量在定義它的類內(nèi)部,直接通過成員變量55例4-1成員變量的訪問classPoint{finalstaticPointorigin=newPoint(0,0);//定義一個類變量,常量,origin為坐標(biāo)原點intx;inty;Point(intx,inty){thisx=x;this.y=y;}}publicclassUsingStatic{publicstaticvoidmain(Stringargs[]){Pointp1=Point(10,20);//構(gòu)造類Point的對象p1Pointp2=Point(310,120);System.out.println(″類Point中的類變量:″);System.out.println(″(″+Point.origin.x+″,″+Point.origin.y+″)″);//訪問類變量(類名.類變量名)

System.out.println(″類Point中的類實例變量:″);System.out.println(″(″+p1.x+″,″+p1..y+″)″);//訪問類對象變量x、y,p1是類對象名(類對象名.類對象變量名)}}例4-1成員變量的訪問56迪米特法則LawofDemeter1987,NortheasternUniversity火星登陸軟件,木星歐羅巴衛(wèi)星軌道飛船軟件系統(tǒng)Don’ttalktostrangers迪米特法則LawofDemeter57對象對象58對象的產(chǎn)生NEW類對象對象的產(chǎn)生使用的代碼:newFighterPlane();對象的聲明使用的代碼:FighterPlanefp;對象的產(chǎn)生NEW類對象對象的產(chǎn)生使用的代碼:new59NEW類對象可以聲明后立即賦予對象:FighterPlanefp=newFighterPlane()NEW類對象可以聲明后立即賦予對象:FighterPlane60對象內(nèi)存空間分布當(dāng)“FighterPlanefp=newFighterPlane()”處于某個方法中時:對象內(nèi)存空間分布當(dāng)“FighterPlanefp=n61對象作為參數(shù)的特點普通數(shù)據(jù)類型作為參數(shù)傳遞是值傳遞,【例4.3】。對象是引用傳遞。a對象s對象as【例4.4】【例4.5】對象作為參數(shù)的特點普通數(shù)據(jù)類型作為參數(shù)傳遞是值傳遞,【例462對象數(shù)組MyClass[]mc=newMyClass[10];數(shù)組對象特點及常用方法具有對象引用的特點,例【4.6】屬性length的用法,例【4.7】對象數(shù)組MyClass[]mc=newMyClas63構(gòu)造方法構(gòu)造方法64構(gòu)造方法的含義,【例4.8】構(gòu)造方法的特征,【例4.9】、【4.10】構(gòu)造方法的注意事項finalize方法與垃圾回收

什么是垃圾對象?垃圾對象何時回收?垃圾對象回收時調(diào)用finalize方法。構(gòu)造方法的含義,【例4.8】構(gòu)造方法的特征,【例4.9】、65構(gòu)造方法說明

每當(dāng)由類構(gòu)造對象時都要調(diào)用該類特定的構(gòu)造方法,在Java中,每個類都至少有一個構(gòu)造方法。構(gòu)造方法可以確保用戶正確地構(gòu)造類的對象,同時,構(gòu)造方法也會對對象作初始化工作。構(gòu)造方法說明形式如下:

[構(gòu)造方法修飾符]方法名([形式參數(shù)列表])[throws異常列表]方法體構(gòu)造方法修飾符與一般方法修飾符相同,讀者參見4.3.3小節(jié)。

構(gòu)造方法不能像一般的方法那樣被直接調(diào)用,它是在構(gòu)造類的實例的時候被Java編譯器自動調(diào)用的。當(dāng)我們構(gòu)造一個類的實例的時候,編譯器主要完成以下三件事情:(1)為對象分配內(nèi)存空間;(2)初始化對象中的實例變量的值,初始值可以是缺省值,或者變量按指定的值初始化;(3)調(diào)用對象的構(gòu)造方法。一個類的構(gòu)造方法可以有多個,它們都具有相同的方法名,即類名。編譯器根據(jù)參數(shù)的類型來決定調(diào)用哪個構(gòu)造方法。構(gòu)造方法分為缺省的構(gòu)造方法(不帶參數(shù))和帶參數(shù)的構(gòu)造方法。構(gòu)造方法說明每當(dāng)由類構(gòu)造對象時都要調(diào)用該類特定的構(gòu)造方法,66缺省的構(gòu)造方法

如果類的定義沒有編制構(gòu)造方法,Java語言會自動為用戶提供。這個由Java自動提供的構(gòu)造方法就是所謂的缺省構(gòu)造方法。缺省的構(gòu)造方法確保每個Java類都至少有一個構(gòu)造方法,該方法應(yīng)符合類的定義。例如在例4-1的類Point中,如果我們沒有定義構(gòu)造方法,則Java自動提供了一個缺省的構(gòu)造方法,如下:缺省的構(gòu)造方法:publicPoint(){};//對象成員變量的初值按Java規(guī)定

缺省的構(gòu)造方法如果類的定義沒有編制構(gòu)造方法,Java語言會67帶參數(shù)的構(gòu)造方法

帶有參數(shù)的構(gòu)造方法能夠?qū)崿F(xiàn)這樣的功能:當(dāng)構(gòu)造一個新對象時,類構(gòu)造方法可以按需要將一些指定的參數(shù)傳遞給構(gòu)造方法。如:publicPoint(intx,inty){this.x=x;this.y=y;}帶參數(shù)的構(gòu)造方法帶有參數(shù)的構(gòu)造方法能夠?qū)崿F(xiàn)這樣的功能:當(dāng)構(gòu)68類成員屬性和方法的非訪問修飾符類成員屬性和方法的非訪問修飾符69方法說明

在Java中,方法總是Java類的一個組成部分。通過類的方法,改變對象的狀態(tài)。方法說明的格式如下:方法首部說明方法體方法說明分為方法首部說明和方法體兩部分。方法說明在Java中,方法總是Java類的一個組成部分。通70方法修飾符包括以下幾種:public修飾的方法可以由其他類訪問;protected修飾的方法只能由繼承關(guān)系的類訪問;private修飾的方法只能由說明該方法的類訪問;static修飾的方法為靜態(tài)方法,又叫類方法;無static修飾的方法為對象方法。類方法是該類的所有對象共享的方法。abstract修飾的方法為抽象方法,無其方法體;final修飾的方法為最終方法,不能由子類改變;synchronized(同步)修飾的方法執(zhí)行之前給方法設(shè)置同步機制,實現(xiàn)線程同步;native修飾的方法為本地方法,即方法實現(xiàn)與本機系統(tǒng)有關(guān)。方法修飾符包括以下幾種:71方法名是Java中任意的標(biāo)識符。按照命名的約定,方法名應(yīng)該是有意義的動詞或動詞短語,它的第一個字母一般要小寫,其他有意義的單詞的首字母要大寫,其余字母小寫。返回值類型可以是任意的Java類型,甚至可以是定義此方法的類。如果方法沒有返回值,則用void表示。形式參數(shù)列表是可選的。如果方法沒有形式參數(shù),就用一對小括號“()”表示。形式參數(shù)列表的形式如下:(類型形參名,類型形參名,……)throws異常列表規(guī)定了在方法執(zhí)行中可能導(dǎo)致的異常。第5章會詳細(xì)介紹。方法名是Java中任意的標(biāo)識符。按照命名的約定,方法名應(yīng)該是7

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論