類的其他功能課件_第1頁
類的其他功能課件_第2頁
類的其他功能課件_第3頁
類的其他功能課件_第4頁
類的其他功能課件_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

a

Chapter8

接的典他功能

Java

g8-1方法的重載

所謂的“童戰(zhàn)”是猾相同的方法名稱,若參微個

微系同,或參熟個劇相同、類型木同的話,方法便具

有本同的功犍。

8-1-1重載

范例:

01〃app8_1,圓形類CCircle,加入生符串類型的color周員

02classCCircleII定義類CCircle

03{

04privateStringcolor;

05privatedoublepi=3.14;

06privatedoubleradius;

07

08publicvoidsetColor(Stringstr){II賦值color的方法

09color=str;

10}

11publicvoidsetRadius(doubler){II賦值radius的方法

12radius=r;

13}

14publicvoidsetAII(Stringstr,doubler){II同時喊他

colorsradius

15color=str;

16radius=r;

17}

18publicvoidshow(){〃輸出有役、顏色與圓面積

19System.out.println(',color=",+color+",

Radius="+radius);

20System.out.println(",area=",+pi*radius*radius);

21)

22}

java

23

24publicclassapp8_1

25{一

26publicstaticvoidmain(Stringargs[])

27(

28CCirclecir1=newCCircle();

29

30cir1.setColorf'Red");II賦值cir1的color

31cir1.setRadius(2.0);II賦值cir1的radius

32cir1.show();

33

34cir1.setAllf'Blue'^.O);〃同時賦值cir1的color和

radius

35cir1.show();

36)

/*app8-1OUTPUT------

color=Red,Radius=2.0

area=12.56

color=Blue,Radius=4.0

area=50.24

-----------------------*/

從存例可看出,setColor().setRadius()setAII()

物是點賊他對會的劇據(jù)鼠員,送必比是家中今別買了冷

氣機、腹上機制除濕機一曲,系但占固間,且旗護上也

本方便。Java的變戰(zhàn)功犍,伶可補足這方面的秋微。

下面的例3杷app8_1的setColor。、setRadius()S

setAII()三個方法用Java童戰(zhàn)的特喉,也單一方法

setCircle來取代。

Java

01〃app8_2,跖數(shù)的唾武

02classCCircleII定義類CCircle

03(

04privateStringcolor;

05privatedoublepi=3.14;

06privatedoubleradius;

07

08publicvoidsetCircle(Stringstr){II賦值color戚員

09color=str;

10)

11publicvoidsetCircle(doubler){II微值radius戚員

java

12radius=r;

13)

14publicvoidsetCircle(Stringstr,doubler){

〃同時賦值color—radius

15color=str;

16radius=r;

17}

18publicvoidshow(){

19System.outprintln("color="+color+,',

Radius="'+radius);

20System.outprintln("area="+pi*radius*radius);

21}

22)

23

24publicclassapp8_2

25{一

26publicstaticvoidmain(Stringargs[])

27{

28CCirclecir1=newCCircle();

29

30cir1.setCirclef'Red");II碉用第8行的setCircle()方法

31cir1.setCircle(2.0);II調(diào)用第9行的setCircle()方法

32cir1.show();

33

34cir1.setCircle(nBluea>,4.0);〃碉用第14行的setCirc?)

方法

35cir1.show();

36}

37)

Java

/*app8-2OUTPUT-——

color=Red,Radius=2.0

area=12.56

color=Blue,Radius=4.0

area=50.24

j------------------------7

從上例可看出,遹這方法的童戰(zhàn),只需有一個方法名

稱,和可擁嗡不同的功用,使用忍來相咨的方便。

Java

囹8-1使用變戰(zhàn)時,方法會根據(jù)參熬的小微與類型來倜用相對應(yīng)的方法.鳥****~*

Java

8-1-2使用厘戢存犯的錯篌

使用變戰(zhàn)時,它的方法是根據(jù)永微的個熬S類型束

碉用相對應(yīng)方法,出此每一個方法的參微個劇或參數(shù)類

型勢須恭同。

微計以參鼎個劇或參數(shù)類型系可犍黨小相同,而只

嗡返㈤類型左同的童藁。例電,下面的隹序代弼是竹系

通的/

publicvoidsetCircle(doubleradius);

publicintsetCircle(doubleradius);

其原國是,一旦倜用了setCircle()方法,則程序

無法判斷是哪一個方法被倜用。事實上,蜀曲編鋅送

雜仔的方法,compiler也會比視錯篌信息

IIIIIIIIII

Java

8-2構(gòu)造函數(shù)

8-2-1構(gòu)造房照的基本女傭

—構(gòu)造海劇的名稱勢領(lǐng)和類名繇相同

標鑰符類名稱(類型1參照1,類型2參照2,…)

;{;;;;;;「;

程格語句;iiiiiiii

…;;--------構(gòu)造落一沒哧返回值

'______________'

|}IIIIIIIIII

錯灌意:構(gòu)造篩微的名稱勢領(lǐng)與其所屬之類的類名繇相同

.?..........................................................X

Java

8-2-2構(gòu)造晶數(shù)的碉用時機

電嗡節(jié)所述,構(gòu)造房照除了沒嗡返㈤他,且名稱處

領(lǐng)導類的名稱相同之外,它的倜用時機也與一般的方法

系同。一般的方法是我需要用到時才倜用,而構(gòu)造篩劇

則是我創(chuàng)建對象時,便會自劭碉用,并執(zhí)行構(gòu)造篩劇的

內(nèi)察。因此,構(gòu)造屬劇本需從程本直接倜用,而是我對

象產(chǎn)女時自劭執(zhí)行。?????

也下列簡單的例3來說闞構(gòu)造徐照的使用/

01〃app8_3,構(gòu)造晶數(shù)的使用

02classCCircleII定義類CCircle

03{iiiiii

04privatedoublepi=3.14;

Java

05privatedoubleradius;

06

07publicCCircle(doubler){II定義構(gòu)造晶數(shù)CCircle。

08radius=r;

09}

10publicvoidshow(){

11System.out.println(",radius="+radius+",

area=,,+pi*radius*radius);

12}

13)

14

15publicclassapp8_3

16{~

17publicstaticvoidmain(Stringargs[])

18(

java

19CCirclecir1=newCCircle(4.0);〃創(chuàng)建對象畀碉用

CCircle。構(gòu)造晶數(shù)

20cir1.show();

21}

22}

/*app8-3OUTPUT------

radius=4.0,area=50.24

---------------*/

程序第7?9行定義了構(gòu)造屬微CCircle。,其五要的

功用是杷radius戚員賦他,r(即構(gòu)造房照所接收的參熬)。

覆意:構(gòu)設(shè)徐懿的名稱號類名稱相同,都是CCircle。此外,

構(gòu)造屬劇CCircle。濟汶市返回他,即使沒有退?他,AX

文構(gòu)選房劇迷是蒸犍加上void這個室,否則我編鋅時輸出

現(xiàn)猾篌?!?/p>

Java

8-2-3構(gòu)造茁微的重南

京Java里,本伍方法可心唾戰(zhàn),構(gòu)造篩照也可“工

t<o在8-1節(jié)已狡梃過,只要方法與方法之間的參微

個微系同,或者是類型本同,便可定文,個名稱相同

的方法,送也就是方法的唾破。

森“iCCircle%例,下面的隹凈是Mapp8_2修改,

只是他setCircle()方法的疊戢改,構(gòu)造屬奧區(qū)童戰(zhàn),電

下面的苑例:????????

Java

01〃app8_4,構(gòu)造晶數(shù)的變意

02classCCircleII定義類CCircle

03(

04privateStringcolor;

05privatedoublepi=3.14;

06privatedoubleradius;

°7色

08publicCCircle(){〃沒1參數(shù)的構(gòu)造篩照

09System.outprintlnf'constructorCCircle()called'1);

10radius=1.0;

11color=,,Green'";

12)

13publicCCircle(Stringstr,doubler){

〃1兩個變量的構(gòu)造篩照

java

14System.out.println(a>constructorCCircle(String,double)call

15color=str;

16radius=r;

17}

18publicvoidshow(){

19System.outprintln("color="+color+",Radius=><+radius)

20System.out.println("area=",+pi*radius*radius);

21)

22}

23

26publicstaticvoidmain(Stringargs[])

27(

28CCirclecir1=newCCircle();

29cir1.show();

30

31CCirclecir2=newCCircle(,,Blue,,,4.0);

32cir2.show();

33}

34)

/*app8-4OUTPUT------------------------

constructorCCircle()called

color=Green,Radius=1.0

area=3.14

constructorCCircle(String,double)called

color=Blue,Radius=4.0

area=50.24

------------------------------------------*/

app8_4共定義了兩個不同參照構(gòu)或?qū)傥?/p>

CCircle()o第一個構(gòu)造屬微CCircle()定義在第8?11行,

它沒嗡G何參數(shù),其作用是杷radius就員微,1.0,杷

color鼠員極為"Green%第二個構(gòu)造屬微

CCircle(String,double)則定義點第13T7行,它可合

別接收String我double兩個類型的參照,蠢粉鼠員被

,相對應(yīng)的他。

8-2-4從某一構(gòu)造西熟碉用另一構(gòu)造西劇

萩某一構(gòu)造房殿內(nèi)碉用另一構(gòu)造篩劇,是通過this。

這個關(guān)箱生來調(diào)用的,電下面的范例:

??????11

01〃app8_5,乂票一構(gòu)造徐數(shù)碉用另一構(gòu)造徐數(shù)

02classCCircleII定義類CCircle

03(

04privateStringcolor;

05privatedoublepi=3.14;

06privatedoubleradius;

07

08publicCCircle(){〃沒]參數(shù)的構(gòu)造篩照

09thisC'Green-'J.O);

10System.out.printlnf'constructorCCircle()called");

11)

12publicCCircle(Stringstr,doubler){

II有永敏的構(gòu)造篩數(shù)

13System.outprintln("constructor

CCircle(String,double)called");

14color=str;

15radius=r;

16)

17publicvoidshow(){

18System.out.println("color="+color+",

Radius=a>+radius);

19System.out.println("area="+pi*radius*radius);

20)

21)

22

23publicclassapp8_5

24{'

25publicstaticvoidmain(Stringargs[])

26(

27CCirclecir1=newCCircle();

28cir1.show();

29)

30}

/*app8-5OUTPUT------------------------

constructorCCircle(String,double)called

constructorCCircle()called

color=Green,Radius=1.0

area=3.14

*1

java

第9行則利用this。關(guān)箱生碉用了有參照的構(gòu)造房

熬CCircle(String,double),并杷color假名

“Green",radius微,1.0。其語法名:

this(HGreenn,1.0);〃碉用構(gòu)造房劇

CCircle(String,double)

覆意在京一構(gòu)造房數(shù)倜用另一構(gòu)造篩照時,處領(lǐng)。

this關(guān)蔑生來倜用,而不犍心構(gòu)造屬微直接倜用,

否則編律時特出現(xiàn)猾篌。例電,若杷第9行改寫名:

CCircleCGreen^l.O);//褶篌的構(gòu)造屬熬碉用

此外,this關(guān)桂生處須與點構(gòu)造房熬內(nèi)的第一行

的假置,數(shù)箱了地方也無法編律

Java

8-2-5構(gòu)造茁熬的公嗡與松帝

方法保實際需要,可被,public與private。相同

的,構(gòu)造徐劇也有publicsprivate之合。到目嘛,

止,我們所使用的構(gòu)造屬熟物屬于public,因此它可

△底程本的低何地方被倜用,所。新創(chuàng)建的對象構(gòu)

可圖劭碉用它。電果構(gòu)造屬微被被鼠private,則無

法森孩構(gòu)造屬劇所位的類。外的地方被倜用。電千

面的范例:

01〃app8_6,公哧與布臂構(gòu)造屬教|

02classCCircleII定義類CCircle

03(

04privateStringcolor;

05privatedoublepi=3.14;

06privatedoubleradius;

08privateCCircle(){〃布有構(gòu)造西教

09System.out.println("privateconstructorcalled");

10)

11publicCCircle(Stringstr,doubler){〃公[構(gòu)造備照

12this();

13color=str;

14radius=r;

15}

16publicvoidshow(){

17System.out.println(''color=''+color+\

Radius="+radius);

18System.outprintln("area="+pi*radius*radius);

19)

20)

java

I-

22publicclassapp8_6

23(一

24publicstaticvoidmain(Stringargs[])

25(

26CCirclecir1=newCCircle("Blue",1.0);

27cir1.show();

28}

29)

/*app8-6OUTPUT--------

privateconstructorcalled

color=Blue,Radius=1.0

area=3.14

-------------------------*/

java

8-2-6構(gòu)設(shè)房劇的省略

在第7章與第8章的8"節(jié)所企殆構(gòu)苴茁劇之嘛的程

本物浸市定義相苴房劇,儂級可。創(chuàng)建新的對象,并

正確地運行程序,運是國,電累構(gòu)苴簡微堵賂,Java

會自劭倜用默儀的構(gòu)造扇微(defaultconstructor)。默欣

構(gòu)造扇微的格式電下;5111

publicCCircle()//默伏的構(gòu)造屬照

}「;;;;;;;;;;

灌意:熟欣的構(gòu)苴詼數(shù)并沒嗡但何的參微,也系做G何

事情的累您匈行彼制了一個沒嗡參微的構(gòu)法篩照,則

在創(chuàng)建對象時會倜用自行微計的構(gòu)造屬微,而本會倜

用默軟的構(gòu)造詼微。運是Java的覆寫(overriding)所致?

K...........................................???x

Java

01〃app8_7,簡單的范例,實例變量與實例方法

02classCCircleII定義類CCircle

03{

04privatedoublepi=3.14;

05privatedoubleradius;

06

07publicCCircle(doubler){〃CCircle()構(gòu)造房照

08radius=r;

09)

10publicvoidshow(){

11

System.out.println(i,area=ll+pi*radius*radius);

12)

13}

15publicclassapp8_7

16{一

17publicstaticvoidmain(Stringargs[])

18{

19CCirclecir1=newCCircle(I.O);

20cir1.show();

21CCirclecir2=newCCircle(2.0);

22cir2.show();

23)

24}

/*app8-7OUTPUT-

area=3.14

area=12.56

■■■■■■■■■■■■■■■■■■■*/

實例變量11,1,1

衣app8_7中,第19號第21行今別產(chǎn)生了新的對彖

cir1-Bcir2o送蛉對象市自己保腐field的地方,而系

與其他對象共厚,電囹8-2所示。

3.14

l.P.l…一廠

radius?1.0

Java

由上述可加,創(chuàng)建的對象ci門與cir2物怩保密自己的他,

而恭與其他對象共享。國此,電果改變了ciH票個變

量(鼎據(jù)成員)的假,cir2的微據(jù)鼠員并系受影響,國名

送所變量各自獨貪,且嘉手系同的肉商之種。具才此

特僧的變量,Java稱之,〃實例變量〃o

實例方法

勢領(lǐng)先創(chuàng)建對象,霽利用對象來倜用它。無法直接調(diào)

用show。方法而系通過對象。其有此特檻的方法,

Java稱之,實例方法o

電下面的程本代媽:

CCirclecir1=newCCircle(I.O);II創(chuàng)建對象cir1

cir1.show();〃由對象cir1碉用show()方法

CCirclecir2=newCCircle(2.0);II創(chuàng)建對象cir2

cir2.show();〃由對象cir2碉用show()方法

Java

8-3-2類變量(classvariable)

“類變量〃和“實例變量〃變量一鋅,都處頻我

類中聲闞。系同的是,電要杷變量聲颯,“類變量”

放須森變量之嘛加X"static”送個標鈉符(modifier)。

例電,假假CCircle類里的變量pi,電要杷它改,

“類變量”,可粉它聲颯感:

privatestaticdoublepi=3.14;〃將pi聲明,"類變

梏pi聲闞鼠class變量是嗡道理的/曲穆,每一個

由CCircle類所創(chuàng)建的對彖,其pi他物相同,因此杷

送個變量令享令每一個對彖耳可,我們實在沒有理由

讓每一個對象都保有匈己的pi他,電此做只會浪費的

商而已。合8-3是杷pi聲颯鼠static之后,變量S向腐

之間的配置關(guān)to£

Java

3.144——

privatestaticdoublepi=3.14;

國此,使用“類變量〃可節(jié)省可觀的兩落空間,

尤其是大量創(chuàng)建對象的時候。

范例:類變量的使用

4且^,

java

01〃app8_8,“類變矍”的使用

02classCCircleII定義類CCircle

03(

04privatestaticintnum=0;II賦值num,"類變量"

05privatestaticdoublepi=3.14;II賦值pi,“類變量”

06privatedoubleradius;

07

08publicCCircle(doubler){IICCircle構(gòu)造函教

09radius=r;

10num++;〃寶CCircle。構(gòu)造函熬被碉用時,num便加1

11}

12publicvoidshow(){

13System.outprintln("area="+pi*radius*radius);

ijava

14)

15publicvoidcount(){IIcount()方法,用耒顯示R嘛對

彖創(chuàng)建的小數(shù)

16System.out.println(num+,"object(s)created");

17}

18}

19

20publicclassapp8_8

21{'

22publicstaticvoidmain(Stringargs[])

23(

24CCirclecir1=newCCircle(I.O);

25cir1.count();II用cir1對象碉用count()方法

26CCirclecir2=newCCircle(2.0);

27cir1.count();II用cir1對象碉用count()方法

28cir2.count();〃改用cir2對象碉用count()方法

29}

30}

/*app8-8OUTPUT--

1object(s)created

2object(s)created

2object(s)created

---------------------*/

8-3-3類方法

電上例,通過ci門對象倜用count。方法來顯示

由CCircle類所創(chuàng)建對象的個劇,及無系咨,但卻

做了它本該做的串,國,〃所創(chuàng)建對象的總劇〃4

竟和對象本身沒嗡太大的關(guān)系,友而和類有關(guān)寐。

有沒1更治的方法7?????

很簡單,杷count。方法聲闞鼠“類方法”即可。

其作法是,在方法之而加上static標的符:

publicstaticvoidcount(){〃構(gòu)conut()聲明鼠"類方法”

System.out.println(num+"object(s)created");

)

范例-用方核就使用!!!!!4

Java

01〃app8_9,“類方法”的使用

02classCCircleII災(zāi)義類CCircle

03{

04privatestaticintnum=0;

05privatestaticdoublepi=3.14;

06privatedoubleradius;

07

08publicCCircle(doubler){

09radius=r;

10num++;

11)

12publicvoidshow(){

13

System.outprintln(,,area=,,+prradius*radius);

14)

java

15publicstaticvoidcount(){II聲明conut。%"類方法”

16System.outprintln(num+,,object(s)created");

17)

18}

19

20publicclassapp8_9

21{"

22publicstaticvoidmain(Stringargs[])

23{

24CCircle.count();II用CCircle類碉用count()方法

25CCirclecir1=newCCircle(I.O);

26CCircle.count();II用Circle類碉用count()方Hi

27CCirclecir2=newCCircle(2.0);

28CCircle.count();II用Circle類碉用count()方Hi

29}

30}

java

/*app8-9OUTPUT--

0object(s)created

1object(s)created

2object(s)created

-----------------?

第15?17行定義了count。,"類方法”

第24、26與28行的是心CCircle類直接倜用count。方

法,而熊通過對彖。

您也可心遹過對會來倜用“類方法〃,國此福格的第

26與28行可改寫成:

cir1.count();//用cir1對象調(diào)用count()方法

cir2.count();//用cir2對象碉用count()方法

Java

main()方法與static標的符

20classapp8_9

21{"

22publicstaticvoidmain(Stringargs[])IImain()方法

23{

■■■■■■■

29}

30)

main()方法之嘛也加X了一個static標傭符,使main。

變感是一個“類方法”。omain。方法是類app8_9的一個

方法,而Java程本的是從main。方法開胎運行。很顯政的,

倜用main。方法的是類app8_9,而冰由類app8_9所創(chuàng)建的

對象。因此森main。方法瑞加上static他充足理所劣國的事。

此外,main。方法石是在類之外被碉用的,因此端而迷得加

上public標輛符。且

Java

8-3-4“類方法”使用的限制

“類方法”訪向的限制

我沒嗡對家產(chǎn)2的情況下,〃類方法〃保蚣可。

被倜用?;谶@個原故,“類方法”南都無法對

“實例變量〃與〃實例方法”進竹彷冏的搖作,送

是國為它們都緊索于對象。臉下面代雞:

publicstaticvoidcount(){

System.out.println(num+"object(s)

created");

System.out.pnntln(,'radius=,,+radius);//#

篌,木可揚問〃實例變量〃

show();〃褶篌,左怩碉用"實例方法"

Java

〃類方法”面部系犍使用this房錢生

除了在“類方法”內(nèi)部本犍揚冏“實例變

量”S“實例方法”的限制之外,4“類方法”

河部也蒸犍使用this關(guān)蔑多。因為this是代表碉用

該方法的對彖,的冬〃類方法”既已系需對象來

倜用,this也自蚣系盛花點孑"類方法”內(nèi)部。

電下面代媽:||||

publicstaticvoidcount(){

System.out.println(num+"object(s)created");

System.out.println("radius=,,+this.radius);//#

篌,不可使用this關(guān)被生

Java

8-4類類型的變量

變量可令,"基本類型的變量”m"冰基存類型

的變量〃兩種。所謂“基多類型的變量〃是指由int、

double等關(guān)箱生所聲颯而得的變量,而由類聲颯而得

的變量,我們稱之,“類類型的變量”,它是屬孑

“旅基本類型的變量”的一種。

8-4-1賦他給類類型的變量

范例L

01〃app8-0,賦值俗類類型的變量

02classCCircleII定義類CCircle

03{

04privatestaticdoublepi=3.14;

05privatedoubleradius;

06£

java

07publicCCircle(doubler){

08radius=r;

09}

10publicvoidshow(){

11System.out.println("area="+pi*radius*radius);

12)

13)

14

15publicclassapp8_10

16{一

17publicstaticvoidmain(Stringargs[])

18{

19CCirclecir1,cir2;II聲明cir1,cir2⑤類類型的變量

20cir1=newCCircle(LO);〃創(chuàng)《新的對象,^<cir1

能向它

21cir1.show();

java

22

23cir2=cir1;〃桁cir1微令cir2,此時這兩個變量所指向

的向密物相等

24cir2.show();

25)

26)

/*app8-10OUTPUT-

area=3.14

area=3.14

---------------*/

福本說明;????;

程本第19行聲闞了cir1、cir2怒CCircle類類型的變量,第20行

。Ccircle()構(gòu)造函M建新的對象,笄用類類型的變量cir1指

向它。第23行將cir1微給cir2,電此一束cir-1與cir2所相向的對

象物相同.£

Java

cirl

cir2

被置cir2=ciH可粉兩個類類型的變量既向同一個對象

5

4^,

java

8-4-2力類類型的變量傳遞參劇

電累想傳遞類類型的變量到方法里,其作法

也大同小異,旦要在定義方法時,杷類名繇加到

參微之嘛即可。

例電,假被要編寫compare。方法,用來叱

簇倜用它的對象cir1與compare。里的參數(shù)cir2的

去據(jù)周員是否黨企相同,可用電下的語法來表示,

pare(cir2);//比簌對象cir1與cir2的《

據(jù)成員是否相同J1^|i

【格式。類類型的變量傳遞參微】

』;;;;;;;;;;£

java

假,方洪沒嗡返回他

voidiCCirclecompare^CCircleobj){

、_____;I_______________________________」

變量類型,CCircle

范例:山類類型的變量傳遞參裁

01//app8_12,對象的叱較

02classCCircle

03{

04privatestaticdoublepi=3.14;

05privatedoubleradius;

06

Java

07publicCCircle(doubler){IICCircle。構(gòu)造簡微

08radius=r;

09)

10publicvoidcompare(CCirclecir){IIcompare()

方法

11if(this==cir)

12System.out.printlnC'objectsareequal");

13else

14System.outprintlnC'objectsarenot

equal11);

15)

16)

java

17

18publicclassapp8_12

19{一

20publicstaticvoidmain(Stringargs[])

21{

22CCirclecir1=newCCircle(I.O);

23CCirclecir2=newCCircle(2.0);

24cir1.compare(cir2);II倜由compare(),比

就ciMScir2是否相同

25)

26}

/*app8-12OUTPUT--

objectsarenotequal

Q--A

Java

8-4-3由方法退命類類型的變量

電要由方法返?類類型的變量,只要點方法聲明的

麻而加上欲返回的類即可,其語法電干:

_____這?類型,CCircle類的變量

iCCircle1compare(CCirclebbj){

....I——參熟類型為CCircle

}、;;;;;:;;;;

范例;由方法返㈤類類型的變量

i??????????

IIIIIIIII?|ISB

01〃app8_13,由方法傳遞類類型的變量

02classCCircleII定義類CCircle

03{

04privatestaticdoublepi=3.14;

05privatedoubleradius;

06

07publicCCircle(doubler){IICCircle構(gòu)造西微

08radius=r;

09}

10publicCCirclecompare(CCirclecir){IICompare()方

11if(this.radius>cir.radius)

12returnthis;

java

III

13else

14returncir;

15)

16)

17

18publicclassapp8_13

19

20publicstaticvoidmain(Stringargs[])

21

22CCirclecir1=newCCircle(I.O);

23CCirclecir2=newCCircle(2.0);

Java

24CCircleobj;

25obj=cir1.compare(cir2);

26if(cir1==obj)

27System.out.println("radiusofcir1islarger");

28else

29System.out.println("radiusofcir2islarger");

30}iiiiiiii

31);;;;;;;

/*app8-13OUTPUT------

radiusofcir2islarger

------------------------*/

8-4-4群數(shù)砌落

用new來創(chuàng)建新的對象,此時Java便會否配

內(nèi)商變間給它。電果此對蒙本森使用了,Java**

樣可收命它所占的為落或間。其作法是,杷猾向

孩對象的變量伍微,null即可。電千代媽:

classapp

(

publicstaticvoidmain(Stringargs[])

CCirclecir1=newcir1();//創(chuàng)建對金,畀合配佝商江

■■■■

cir1=null;//<cir1相向null,代表cir1已系常指向G何對

)

Java

他得灌意的是,電晶兩個類類型的變量指向

同一個對象,則杷其中一個變量微,null,因另

一個變量迷是婿向它,國而Java的搜集殘余內(nèi)需

機制并系會琴及它,電下面的范例:

classapp

(

publicstaticvoidmain(Stringargs[])

CCirclecir1=newcir1();

CCircleci⑵

cir2=cir1;//賦值cir2Scir1的播向同一個對彖

■■■■

cir1=null;//將cir1能向null,但cir2仍指向核對象,因此

系會被稀放

)

Java

8-5利用數(shù)組來保存對象

微殂可保存基本劇據(jù)類型的變量。相同的,對

象也可小用熬狙來商效,但處頒市下面兩個步驟:

1.聲明類類型的劇俎變量,并用new合配內(nèi)存室間

令戴粗。

2,用new產(chǎn)£新的對象,界合肥肉商寵間令它。

例電,欲創(chuàng)建三個CCircle類類型的微組完素,

可用下列的語法/............................

01CCirclecir[];]聲明CCircel類類型的數(shù)組變

02cir=newCircled;j量,并用.w分配內(nèi)存空間

b??????????

■??????????Java

創(chuàng)建腸劇組完素之后,我們便可杷熟組完速指向

由CCircle類所產(chǎn)2的對象:

03cir[0]=newCCircle();]用new產(chǎn)生新的對象,界合

04cir[1]=newCCircle();>配

05cir[2]=newCCircle();J向點變間令它

咨勉,我們利用for循環(huán)來黨就第3?5行的振作:

03for(inti=0;i<cir.length;i++){

04cir[i]=newCCircle();

:。5}

下畫,類類型的劇組S對象微俎的內(nèi)方變向肥

置精形:

Java

合配給類的內(nèi)點變間

臺配含對象的內(nèi)腐寵間

5

java

8-5-1創(chuàng)建對彖鼎殂的范例

范例:對1微俎的使用

o1

o2IIapp8_14,創(chuàng)建對象熬祖

金文類

o3classCCircleIICCircle

o4

o5privatestaticdoublepi=3.14;

o6privatedoubleradius;

o7

構(gòu)造函數(shù)

O8publicCCircle(doubler){IICCircle

O9radius=r;

10)

11publicvoidshow(){

12System.outprintln("area="+pi*radius*radius);

13)

14)

15

publicclassapp8_14?一J

Java

16

17publicstaticvoidmain(Stringargs[])

18

19CCirclecir[];聲明類類型的數(shù)組,并用

20cir=newCCircle[3];n一w分配內(nèi)存空間

21cir[0]=newCCircle(I.O);

22cir[1]=newCCircle(4.0h用「一w產(chǎn)生新的對象,

23cir[2]=newCCircle(2.0)(并分配給數(shù)組元素

24

25cir[1].show();〃利用對象cir[1]碉用show()方法

26cir[2].show();〃利用對象cir[2]調(diào)用show()方法

27)

28)

/*app8-14OUTPUT-

area=50.24

area=12.56

-------------------*/0

A—)

Java

8-5-2傳遞對象照殂到方法里

也可。傳邃對象微組到方法里,下例是將由

CCircle類所創(chuàng)建的對象鼎俎傳遢到方法向,并返回送

蛉對象數(shù)組中radius鼠員的景大他。

01〃app8_15,傳遞對象微組到方法

02classCCircle//定義類CCircle

03{

04privatestaticdoublepi=3.14;

05privatedoubleradius;

06

Java

07publicCCircle(doubler){

08radius=r;

09}

10

11publicstaticdoublecompare(CCirclec[])II

compare()方法

12{

13doublemax=0.0;

14for(inti=O;i<cdength;i++)

15if(c[i].radius>max)

16max=c[i].radius;

17returnmax;

18)

19}

20£

21publicclassapp8_15

22{"

23publicstaticvoidmain(Stringargs[])

24{

25CCirclecir[];

26cir=newCCircle

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論