




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章 類與對象13.1 面向?qū)ο笏枷敫攀龀绦蛎鎸Φ膯栴}域客觀世界客觀世界有很多事物事物有自己的狀態(tài)和行為事物間有各種聯(lián)系通過事物間的聯(lián)系,事物產(chǎn)生相互作用在一個面向?qū)ο笙到y(tǒng)對象是現(xiàn)實世界的事物的抽象事物的狀態(tài)抽象為對象的屬性和方法事物間的關(guān)系通過對象間的關(guān)系表示事物間的相互作用通過對象間的消息通信支持。23.1.1 對象客觀世界由具體事物構(gòu)成,每個事物由自己的一組狀態(tài)和行為。把問題域中的事物抽象為對象,狀態(tài)抽象為一組數(shù)據(jù)(屬性),行為抽象為一組操作服務(wù)(方法)對象:對象標(biāo)識:對象名屬性:一組數(shù)據(jù)(數(shù)據(jù)成員)方法:操作,服務(wù)(成員方法)一輛汽車靜態(tài)特征:顏色:藍色型號:XXXX馬力:100動態(tài)
2、特征:行駛轉(zhuǎn)彎停車car1屬性:“blue”,”XXXX“,100方法:move,turn,stop33.1.2 類把具有共同性質(zhì)的事物歸為一類,得出一個抽象的概念(抽象與分類原則)對象是對事物的抽象類是對對象的抽象面向?qū)ο笳Z言中類是對同類的所有對象的抽象描述屬性描述方法描述類類標(biāo)識:類名屬性說明(屬性名,屬性類型)方法說明與實現(xiàn)對象:car1屬性:“blue”,”XXXX“,3方法:move,turn,stop對象:car2屬性:“red”,”YYYY“,2.5方法:move,turn,stop類:Car屬性說明:color 字符串,type 字符串,horsePower 整數(shù)方法說明與實現(xiàn)
3、:move,turn,stop4類與對象的關(guān)系抽象與具體的關(guān)系類是同類對象的抽象描述對象是符合類描述的具體事物我們稱:對象是類的實例程序先定義類創(chuàng)建類的對象,完成系統(tǒng)功能模具-零件類型-變量53.1.3 消息通信把對象之間產(chǎn)生相互作用所傳遞的信息稱做消息。通過給對象發(fā)送消息請求對象提供服務(wù),實現(xiàn)對象間的協(xié)作,完成相應(yīng)的功能。消息格式:接收消息的對象,請求的功能,傳遞的數(shù)據(jù)返回的結(jié)果car2.move其他對象或全局函數(shù)對象:car2屬性:“red”,”YYYY“,2.5方法:move,turn,stop消息對象的方法就是對象能提供的功能(服務(wù)),給對象發(fā)消息就是調(diào)用對象的方法。63.1.4 對象
4、之間的關(guān)系事物之間的關(guān)系體現(xiàn)為對象之間的關(guān)系對象之間有關(guān)系,才能進行消息通信對象間關(guān)系的表示73.2 類Java程序設(shè)計過程就是定義類的過程定義類定義類的對象及之間交互Java的類系統(tǒng)定義的類(通用的類:輸入輸出,界面等)自定義的類(特定應(yīng)用相關(guān)的類)8【例3-1】矩形形狀類class Rectangleint width;int height;void area()int a=width*height;System.out.println(面積為+a);void perimeter()int a=2*(width+height);System.out.println(周長為+a);93.2.
5、1 類定義修飾符 class 類名 extends 父類名 implements 接口名列表 數(shù)據(jù)成員聲明成員方法聲明與實現(xiàn)類頭必須項:class 類名可選項extends 父類名 implements 接口名列表類的修飾符:public abstract | final 類體103.2.2 數(shù)據(jù)成員定義數(shù)據(jù)成員要在類體中聲明修飾符 數(shù)據(jù)類型 變量名; 必須項:數(shù)據(jù)類型 變量名;可選項:數(shù)據(jù)成員修飾符:public | protected | private static final transient volatile 113.2.3 成員方法的定義修飾符 返回類型 方法名(形參列表) 拋出
6、異常列表語句序列121、方法頭必須項:返回類型 方法名()方法名()返回類型:方法返回結(jié)果的類型。若不需要返回值,則為void可選項:形參列表:類型名 形參名1,類型名2 形成名2 . 拋出異常列表方法的修飾符:public | protected | private static final|abstract nativesynchronized 132、方法體語句使用參數(shù)返回值與return語句return 表達式;結(jié)束方法執(zhí)行,將表達式的值作為方法的返回結(jié)果。(適于返回類型為非void)return;結(jié)束方法執(zhí)行。(適于返回類型為void)void drawRect(char c) in
7、t side=5;for(int i=0;iside;i+)for(int j=0;jside;j+)System.out.print(c);System.out.println();14if (x0) return x;else return -x if (x0) return x; return x;int f ( int x )if(x0)return x;int f ( int x )if(xr1.area()r.display();elser1.display();27編譯:兩個類在一個文件里:Test.java(以public類的類名命名)一個文件最多一個public類(這里把主類
8、設(shè)為public類)javac Test.java兩個類各在一個文件里:Test.java,Rectangle.javajavac Rectangle.javajavac Test.java運行java Test;(Test 是main函數(shù)所在類)編譯完成后,每個類生成一個字節(jié)碼文件Test.classRectangle.class283.4 方法重載一個類中,多個方法使用同一個名字,稱為方法的重載。 方法重載的區(qū)分參數(shù)個數(shù)不同,或參數(shù)類型不同,這樣的重載是有效的方法重載。注意:方法名的不同,或返回值類型的不同是不能區(qū)分重載方法的。class Avoid f(int a, int b) voi
9、d f(int a,int b,int c) void f(double a, double b) A a=new A();a.f(1,1);a.f(1,2,3);a.f(1.234,0.67); 29class Rectangle.void scale(int s) width=width*s;height=height*s;void scale ( int s, char type)if ( type = = w)width = width*s;else if ( type = = h)heigh = height*s;303.5 對象的初始化與清除初始化:變量(對象)在使用前應(yīng)該具有確定
10、的值。清除:當(dāng)變量或?qū)ο笥猛?,其?nèi)存應(yīng)回收局部變量初始化:方法體內(nèi)定義的局部變量在使用前必須已經(jīng)賦值,否則編譯錯誤。清除:方法體內(nèi)局部變量在方法結(jié)束時由系統(tǒng)清除。對象初始化:清除:313.5.1 構(gòu)造方法構(gòu)造方法與類同名,且沒有返回值。形如:類名(形參列表)/語句有關(guān)構(gòu)造方法的幾條規(guī)則:對象創(chuàng)建時一定會調(diào)用構(gòu)造方法。構(gòu)造方法也只能在創(chuàng)建對象時,由Java系統(tǒng)自動調(diào)用,以后不能再主動調(diào)用。對象創(chuàng)建時必須與構(gòu)造方法格式一致,即構(gòu)造方法若有形參列表,則創(chuàng)建對象時應(yīng)傳遞匹配的實參列表。若類沒有定義構(gòu)造方法也是可以的,Java系統(tǒng)會自動為類創(chuàng)建一個不帶參數(shù)的構(gòu)造方法,當(dāng)然這個方法的方法體是空的,什么初始
11、化操作也不做。32構(gòu)造方法的重載一個類可以有多個構(gòu)造方法,創(chuàng)建對象時,要與其中一種構(gòu)造方法匹配。一旦已經(jīng)定義了構(gòu)造方法,Java系統(tǒng)就不會再自動創(chuàng)建不帶參數(shù)的構(gòu)造方法了(即使類中定義的構(gòu)造方法中并沒有不帶參數(shù)的構(gòu)造方法)。不帶參數(shù)的構(gòu)造方法(簡稱無參構(gòu)造方法,也常稱為默認(rèn)構(gòu)造方法,缺省構(gòu)造方法)是很重要的構(gòu)造方法,很多情況下會自動調(diào)用它。33class Rectangleint width;int height;Rectangle() /構(gòu)造方法(1),不帶參數(shù)width=1;height=1;Rectangle(int w,int h) /構(gòu)造方法(2),帶兩個參數(shù)width=w;heigh
12、t=h;void display()System.out.println(矩形寬為+width+,高為+height);public class Testpublic static void main(String args)Rectangle r=new Rectangle(); Rectangle r1=new Rectangle(3,5)r.display();r1.display();343.5.2 對象的初始化所有的數(shù)據(jù)在使用前都應(yīng)有值對象屬性在使用前應(yīng)有值(如:訪問對象屬性,調(diào)用對象成員方法)對象初始化的三種方法數(shù)據(jù)成員默認(rèn)值在說明數(shù)據(jù)成員時直接初始化使用構(gòu)造方法35類型默認(rèn)值by
13、te(byte)0short(short)0int0long0Lfloat0.0fdouble0.0charu0000booleanfalse引用null1、默認(rèn)值初始化在對象創(chuàng)建時,其數(shù)據(jù)成員會自動被初始化為默認(rèn)值class Aint x;void display()System.out.println(x);public class Testpublic static void main(String args)A a=new A();a.display();int x;System.out.println(x);注:方法內(nèi)創(chuàng)建的局部變量不會自動初始化362、在說明類的數(shù)據(jù)成員時直接初始化
14、class A int a=10;Rectangle r = new Rectangle(3,5);void f()3、使用構(gòu)造方法初始化4、初始化的執(zhí)行先默認(rèn)值初始化再根據(jù)聲明時賦值情況,設(shè)置數(shù)據(jù)成員的值最后調(diào)用構(gòu)造方法class A int x;int y=10;int z;Rectangle r;A() x=100; r=new Rectangle(); 373.5.3 對象的清除Java中的對象必須通過new關(guān)鍵字創(chuàng)建而Java運行時系統(tǒng)提供了垃圾收集機制,能監(jiān)測所有用new創(chuàng)建的對象的使用狀態(tài),當(dāng)對象不再需要的時候會自動清除它們,收回內(nèi)存。383.6 this引用在類的方法中(不包含
15、靜態(tài)方法)都隱含了一個this引用,這個引用的類型為當(dāng)前類,其指向的是調(diào)用方法的當(dāng)前對象。this的使用方法與普通引用的使用是相同的。在類的方法中可以自由使用這個引用來訪問當(dāng)前對象的數(shù)據(jù)成員,或針對當(dāng)前對象來調(diào)用方法。 .int area()int a=this.width* this.height;return a;.Rectangle r=new Rectangle(2,3);int d = r.area(); /隱含效果Rectangle.area( r );39this的使用返回當(dāng)前對象自己區(qū)分同名數(shù)據(jù)成員與形參 在構(gòu)造方法中使用構(gòu)造方法class Aint x;void f(int
16、x)this.x=x;class Rectangleint width;int height;Rectangle(int w,int h) width=w;width=h;Rectangle()this(1,1); /調(diào)用第一個構(gòu)造方法403.7 引用類型理解與應(yīng)用基本類型:變量聲明的同時創(chuàng)建了特定類型的數(shù)據(jù)(進行了內(nèi)存分配)引用類型:所有其他類型都為引用類型(類,數(shù)組,接口),其特點為:進行變量聲明的時候只創(chuàng)建引用變量,而不創(chuàng)建具體對象。具體對象需要用new創(chuàng)建(分配內(nèi)存)引用與對象分離,其對應(yīng)關(guān)系不固定,可以變化。這樣就有可能產(chǎn)生一些前面講基本類型時沒有遇到過的問題:(1)一個引用先后指向
17、不同的對象的情況。(2)多個引用指向同一個對象的情況。413.7.1 理解引用類型引用支持的運算賦值=,!=1、賦值運算(1)被new創(chuàng)建的對象賦值。(表示:引用指向了一個對象)(2)被同類型的引用變量賦值。(注意:這會引起兩個引用指向同一個對象)(3)被賦值以null。(表示引用不再指向任何對象)42class Rectangleint width;int height;Rectangle(int width,int height) this.width=width; this.height=height;void set(int width,int height) this.width=w
18、idth; this.height=height;void display( )System.out.println(矩形寬為+width+,高為+height); public class Testpublic static void main(String args).43Rectangle a=new Rectangle(1,2);Rectangle b=new Rectangle(3,4);a = b;a.display();b.display();a.set(5,6);a.display();b.display();a=null;b=null;a.display();/錯誤1234a
19、b1234ab56ab一個對象如沒有任何引用指向它,對象就是無用的,無用的內(nèi)存由Java垃圾收集機制回收。當(dāng)對象使用完畢時,可以將引用變量賦值為nullnullnullab56442、比較運算中的=,!=兩個引用變量可以進行相等與不等的比較,其比較的是引用的值,而不是引用所指向的對象是否相等引用變量可以與null進行相等與不等的比較,來判斷引用變量是否指向了對象Rectangle a = new Rectangle(3,4);Rectangle b = new Rectangle(3,4);if(a=b)System.out.println(“相等1”);a=b;if(a=b)System.o
20、ut.println(“相等2”);a=null;a.display();/錯誤if (a!=null)a.display();453.7.2 方法參數(shù)傳遞參數(shù)傳遞方式按值傳遞:Java的基本類型數(shù)據(jù)采用這種傳遞方式。其特點是,實參將其值傳遞給形參,形參是實參的一個本地拷貝,對形參的操作對實參沒有影響。 按引用傳遞:Java的引用類型的對象都采用這種傳遞方式。其特點是:參數(shù)傳遞時,實際傳遞的是對象的引用,而不是對象本身。形參是“實參引用”的一個本地拷貝,這樣形參會指向?qū)崊ο?,通過形參引用對對象的操作會作用到實際的實參對象上。 46【例3-4】按值傳遞對實參的影響class Avoid par
21、ameterChangeTest ( int n) n = 10;public class Testpublic static void main(String args)A a = new A();int b=13;a. parameterChangeTest ( b);System.out.println (b);形參n與實參b沒有直接聯(lián)系,對n的改變對b沒影響47【例3-5】按引用傳遞對實參的影響class Avoid parameterChangeTest ( B n) n.i = 10;class Bint i;public class Testpublic static void
22、main(String args)A a = new A();B b = new B();b.i=100;a. parameterChangeTest ( b);System.out.println (b.i);形參n即代表實參對象b,通過n改變數(shù)據(jù)成員,就是改變實參對象48【例3-6】按引用傳遞對實參的影響class Avoid parameterChangeTest ( B n) n = new B();n.i = 10;class Bint i;public class Testpublic static void main(String args)A a = new A();B b =
23、 new B();b.i=100;a. parameterChangeTest ( b);System.out.println (b.i);對形參引用的重新賦值對實參并沒有影響。 49引用類型做參數(shù)應(yīng)用class Rectangleint width;int height;Rectangle()width=0;height=0;Rectangle(int w,int h)width=w; height=h;Rectangle(Rectangle r) width=r.width; height=r.height;void set(int width,int height) this.width
24、=width;this.height=height;void set(Rectangle r) width=r.width;height=r.height;50boolean equals(Rectangle r) return (width=r.width)&(height=r.height); void display()System.out.println(矩形寬為+width+,高為+height);public class Testpublic static void main(String args)Rectangle a=new Rectangle();Rectangle b=n
25、ew Rectangle(3,5);Rectangle c=new Rectangle(b);System.out.println(b=c);System.out.println( b.equals(c) );513.7.3 返回值為引用類型方法的返回值也可以為引用類型。當(dāng)需要返回對象時,返回的實際是對象的引用,而不是對象本身。當(dāng)將這個返回的引用賦值給某個聲明的引用變量時,這個引用變量會指向這個返回值(引用)指向的對象。 52【例3-8】引用類型做返回值(返回當(dāng)前對象)class Rectangleint width;int height;Rectangle(int w,int h)width
26、=w; height=h;void set(int width,int height) this.width=width;this.height=height;void display()System.out.println(矩形寬為+width+,高為+height);Rectangle scale(int s) width=width*s;height=height*s;return this;53Rectangle scale(int s,char type) if(type=w)width=width*s;else if(type=h)height=height*s;return th
27、is;public class Testpublic static void main(String args)Rectangle a=new Rectangle(3,5);a.display();Rectangle b=a.scale(3);b.display();b.set(1,1); /語句(a)a.display(); /語句(b)b.display(); /語句(c)54【例3-9】引用類型做返回值(返回新對象)class Rectangleint width;int height;Rectangle(int w,int h)width=w; height=h;void displa
28、y()System.out.println(矩形寬為+width+,高為+height);Rectangle scale(int s) Rectangle r=new Rectangle(width*s,height*s);return r;Rectangle scale(int s,char type) Rectangle r;if(type=w)r=new Rectangle(width*s,height);else if(type=h)r=new Rectangle(width,height*s);else r=new Rectangle(width,height);return r;5
29、5public class Testpublic static void main(String args)Rectangle a=new Rectangle(3,5);a.display();Rectangle b=a.scale(3);b.display();a.display();563.7.4 類的數(shù)據(jù)成員為引用類型一個類的數(shù)據(jù)成員可以為基本類型,也可以為引用類型(如類的數(shù)據(jù)成員類型可以為已定義的其它類)。這使我們不必從頭定義一個類,而是可以使用已定義的其他類來描述類的數(shù)據(jù)成員,使類的定義更加方便。 57class Rectangle/此類與前面定義相同,這里省略class WallP
30、aintRectangle wall;double unitPrice;WallPaint()wall=new Rectangle(0,0); unitPrice=0;WallPaint(int w, int h, double p) wall = new Rectangle(w,h); unitPrice=p;void setUnitPrice(double p) unitPrice=p;void changeWall(int w, int h) wall.set(w,h); /修改矩形對象58double computePay()return unitPrice* wall.area();
31、 void display()System.out.print(墻體彩繪業(yè)務(wù):n墻體);wall.display();System.out.println(此筆業(yè)務(wù)單價+unitPrice);public class Testpublic static void main(String args)WallPaint w=new WallPaint(2,3,125);w.display();System.out.println(總價格為:+wputePay() );593.8 作用域與生存期作用域:標(biāo)識符的使用范圍生存期:運行時,標(biāo)識符的存在區(qū)間603.8.1 作用域局部域:方法體內(nèi)定義的標(biāo)識符
32、(補充2.6)(1)方法的形參作用域為整個方法,其在方法調(diào)用時通過參數(shù)傳遞初始化。(2)異常處理參數(shù)作用域為其后跟的表示的語句塊,其在異常參數(shù)傳遞時初始化。類域:在類體中(方法外)定義的標(biāo)識符為類的數(shù)據(jù)成員和成員方法,其作用域為類域。(1)類的數(shù)據(jù)成員和成員方法標(biāo)識符的作用域以類為單位,在整個類內(nèi)有效(允許類的所有成員方法直接訪問)。(2)類的數(shù)據(jù)成員互相不能同名,類的成員方法也互相不能同名(因為在同一作用域)。(3)成員方法的局部變量可以與類的數(shù)據(jù)成員同名,但該類的數(shù)據(jù)成員在方法體內(nèi)被暫時屏蔽。但可以通過this引用來訪問該類的被屏蔽的數(shù)據(jù)成員。61【例3-12】局部引用變量與對象class
33、 A int i;A(int i1)i=i1;void display()System.out.println(i);public class Testpublic static void main(String args)A a;A b=new A(10);b.display();a=b;a.display();623.8.2 生命期1、局部變量生命期局部變量的生命期與其作用域有關(guān)。其在程序執(zhí)行流程中,當(dāng)?shù)竭_作用域時變量開始使用,生命期開始,超出作用域則不再使用,生命期結(jié)束。 內(nèi)存棧區(qū)2、數(shù)據(jù)成員生命期與對象生命期數(shù)據(jù)成員生命期:數(shù)據(jù)成員隨對象創(chuàng)建而分配內(nèi)存,隨對象銷毀而銷毀,其生命期與對象
34、生命期一致。對象生命期:new創(chuàng)建時生命期開始,沒有引用指向時生命期結(jié)束。內(nèi)存堆區(qū):垃圾收集機制63class Rectangle/內(nèi)容略class ARectangle r;void set(Rectangle re)r = re;public class Testpublic static void main(String args)Rectangle r1 = new Rectangle(1,1);A b = new A();b.set(r1);A c = new A();c.set(r1);width:1height:1r1rbRectangle對象rc類A對象堆區(qū)棧區(qū)643.9 靜態(tài)
35、數(shù)據(jù)成員與靜態(tài)方法實例數(shù)據(jù)成員,實例方法類數(shù)據(jù)成員,類方法(靜態(tài)數(shù)據(jù)成員,靜態(tài)方法)653.9.1 靜態(tài)數(shù)據(jù)成員類的靜態(tài)數(shù)據(jù)成員概念數(shù)據(jù)成員屬于類,而不屬于任何特定的對象,由類的所有對象共享。類:Student屬性:學(xué)號,姓名,成績學(xué)生數(shù)方法:顯示學(xué)生信息對象:aaa“001”,“aaa”,89對象:bbb“002”,“bbb”,78661、類的靜態(tài)數(shù)據(jù)成員聲明用static修飾符修飾類的數(shù)據(jù)成員2、類的靜態(tài)數(shù)據(jù)成員訪問類靜態(tài)數(shù)據(jù)成員可通過類名直接訪問,也可以通過對象訪問,在類的方法中直接訪問。注意:類的靜態(tài)數(shù)據(jù)成員值被所有對象共享,任何對象都可以訪問類的靜態(tài)數(shù)據(jù)成員,但要注意,它們使用的是同
36、一個數(shù)據(jù),操作的是同一塊內(nèi)存。無論哪個對象修改了它,對其它對象來說,它也已經(jīng)變了。 67【例3-14】類的靜態(tài)數(shù)據(jù)成員訪問class Astatic int i ;void change(int i1) i=i1;public class Testpublic static void main(String args)A.i=10;A a=new A();A b=new A();System.out.println(A.i+,+a.i+,+b.i);a.change(40);System.out.println(A.i+,+a.i+,+b.i);b.i+=10;System.out.print
37、ln(A.i+,+a.i+,+b.i);683、靜態(tài)數(shù)據(jù)成員的初始化默認(rèn)初始值,聲明時直接初始化,靜態(tài)初始化器。靜態(tài)初始化器:Java允許通過靜態(tài)初始化器初始化靜態(tài)數(shù)據(jù)成員。靜態(tài)初始化器語法:class Astatic int i;static int j=10;static int k;static int m;static k=20;m=30;static ./靜態(tài)數(shù)據(jù)成員初始化語句694、實例數(shù)據(jù)成員與靜態(tài)數(shù)據(jù)成員的對比類靜態(tài)數(shù)據(jù)成員與實例數(shù)據(jù)成員二者區(qū)別:(1)不管有多少類的實例,類的靜態(tài)數(shù)據(jù)成員只有一份拷貝,即所有對象共享相同的靜態(tài)數(shù)據(jù)成員;而每個實例對象都有自己的實例數(shù)據(jù)成員。 (
38、2)類的靜態(tài)數(shù)據(jù)成員僅在類初次使用時創(chuàng)建、初始化以后不會再初始化了。而每當(dāng)創(chuàng)建類的對象時都為實例數(shù)據(jù)成員分配存儲空間,并初始化。(3)實例數(shù)據(jù)成員只能通過對象來訪,而類靜態(tài)數(shù)據(jù)成員既可以通過類名來訪問,也可以通過對象來訪問。 70【例3-15】實例數(shù)據(jù)成員與靜態(tài)數(shù)據(jù)成員的對比class Astatic int i;int j;A()i=10; j=10;void add()i+; j+;void display() System.out.println(i=+i+,j=+j);public class Testpublic static void main(String args)A a=ne
39、w A();A b=new A();a.add();a.display();b.display();b.add();a.display();b.display();jjiab引用 對象 靜態(tài)屬性713.9.2 靜態(tài)方法1、 靜態(tài)方法定義在方法聲明前用static修飾符修飾,則方法為靜態(tài)方法。如:class Astatic void f ( ) 注意:類的靜態(tài)方法,屬于整個類,而不針對特定對象,因此不能操作與對象直接相關(guān)的內(nèi)容:(1)不能訪問類的實例數(shù)據(jù)成員,不能調(diào)用類的實例方法。(2)靜態(tài)方法沒有this引用,因為this代表當(dāng)前對象,而靜態(tài)方法并不與特定對象產(chǎn)生聯(lián)系。(3)靜態(tài)方法可以做的是
40、:訪問類的靜態(tài)數(shù)據(jù)成員,調(diào)用類的靜態(tài)方法。當(dāng)然除此以外可以定義方法內(nèi)的局部變量,也可以聲明并操作方法的參數(shù)。722、靜態(tài)方法的調(diào)用靜態(tài)方法可以通過類名調(diào)用,也允許通過對象調(diào)用,也可以被類的其他方法直接調(diào)用。3、靜態(tài)方法的應(yīng)用靜態(tài)方法的一個重要特點就是不用創(chuàng)建對象就可以調(diào)用。這是一個至關(guān)重要的用途,有時候類中會有一些方法需要在沒有對象時也能使用。如:應(yīng)用程序執(zhí)行的入口點main方法必須是靜態(tài)的。因為在其執(zhí)行時,還沒有任何對象被創(chuàng)建出來。靜態(tài)方法常用于描述一些通用的算法。靜態(tài)方法也常用于訪問靜態(tài)數(shù)據(jù)成員。73【例3-16】靜態(tài)方法class Aint i=100;static void f()Sy
41、stem.out.println(hello);void display() System.out.println(i); f();public class Testpublic static void main(String args)A.f();A a=new A();a.f();a.display();74【例3-17】返回兩個整數(shù)的較大值的靜態(tài)方法public class Teststatic int max(int a,int b) if ( a b )return a;elsereturn b; public static void main(String args ) int a
42、=10,b=12,c=3,max;max=max(a,b);max=max(max,c);System.out.println(max);75class Countint i=0;static int counter=0;static void add( )counter+;static void display( )System.out.println(counter);void addi( )i+;void displayi( )System.out.println(i);public class Testpublic static void main(String args )Count
43、.display( );Count.add( );Count.display( );Count a=new Count( );a.add( );a.display( );a.addi( );a.displayi( );Count b=new Count( );b.add( );b.display( );b.addi( );b.displayi( );a.display( );763.10 final 修飾符Java提供了final修飾符,final表示最終的。這個修飾符可以用來修飾局部變量數(shù)據(jù)成員類方法771. final修飾局部變量終態(tài)局部變量,其特點是初始化其值以后就不能再修改其值,相當(dāng)于標(biāo)識符常量 public class Testpublic static void main(String args )final int i;i=10;i=11; /錯782. final修飾類的數(shù)據(jù)成員終態(tài)數(shù)據(jù)成員,其值在程序執(zhí)行期間不能改變。final數(shù)據(jù)成員必須在聲明變量時,或在構(gòu)造方法中初始化,以后在任何其他地方不能再修改它的值。79class Tfinal int n = 10;final int m;
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025工廠員工安全培訓(xùn)考試試題附參考答案(黃金題型)
- 2025年新版車間安全培訓(xùn)考試試題及下載答案可打印
- 2025工廠車間安全培訓(xùn)考試試題【含答案】
- 專題 J-17【簡語法-單選題專練】強調(diào)句 2025年中考英語講解+練習(xí)題匯編(全國)
- 2025融資租賃合同項目融資授權(quán)協(xié)議
- 2025家居采購合同模板
- 2025設(shè)備租賃協(xié)議合同格式
- 2025標(biāo)準(zhǔn)的小型碎石運輸合同模板
- 2025房屋租賃合同簡易范本全新版
- 2025《合同法》之規(guī)定合同解除情形
- 四川省綿陽市游仙區(qū)富樂實驗中學(xué)2023-2024學(xué)年七年級下學(xué)期期中考試數(shù)學(xué)試卷(含答案)
- 浙江省杭州市2024年中考英語真題(含答案)
- Mysql 8.0 OCP 1Z0-908 CN-total認(rèn)證備考題庫(含答案)
- 大眾速騰2009年型電路圖
- 中國書法鑒賞講述課件
- 三人成人心肺復(fù)蘇標(biāo)準(zhǔn)流程
- Specialized-English完整版電子教案最全ppt整本書課件全套教學(xué)教程(最新)
- 畢業(yè)設(shè)計(論文)-人形機器人設(shè)計
- 新能源電力設(shè)備項目立項報告(模板范本)
- 第六章 納米復(fù)合材料
- 《春日》PPT課件
評論
0/150
提交評論