




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、JAVA1第第5章章 類的定義類的定義什么是類什么是類5.1定義類定義類5.2方法的定義方法的定義5.3 構(gòu)造函數(shù)構(gòu)造函數(shù)5.4類的定義和使用類的定義和使用5.5 方法重載方法重載5.6對象的使用對象的使用5.7遞歸遞歸5.8理解包理解包5.9控制對類成員的訪問控制對類成員的訪問5.10 嵌套類嵌套類5.11finalize( )finalize( )方法方法5.12本地方法本地方法5.13教學(xué)重點(diǎn)教學(xué)重點(diǎn)v了解面向?qū)ο笏枷?,掌握對象和類的基本概念、了解面向?qū)ο笏枷耄莆諏ο蠛皖惖幕靖拍?、明確明確JavaJava中的類的定義方法、構(gòu)造方法、方法重中的類的定義方法、構(gòu)造方法、方法重載和載和th
2、isthis的使用。的使用。 v掌握對象的使用方法,明確封裝的作用與方法。掌握對象的使用方法,明確封裝的作用與方法。 v了解繼承的基本概念,明確方法重寫的作用,要了解繼承的基本概念,明確方法重寫的作用,要注意與重載的區(qū)別,掌握注意與重載的區(qū)別,掌握supersuper關(guān)鍵字的使用、繼關(guān)鍵字的使用、繼承中的構(gòu)造方法調(diào)用;了解承中的構(gòu)造方法調(diào)用;了解FinalizerFinalizer。 v掌握多態(tài)性的基本概念、明確多態(tài)實(shí)現(xiàn)的條件,掌握多態(tài)性的基本概念、明確多態(tài)實(shí)現(xiàn)的條件,熟練掌握多態(tài)性的代碼實(shí)現(xiàn)熟練掌握多態(tài)性的代碼實(shí)現(xiàn) v類的定義:類的定義: 類是一類對象的抽象或原形,它定義了該類對象類是一類對
3、象的抽象或原形,它定義了該類對象的共同的的共同的和和。 用戶可以使用類的定義來生成該類的對象,生成用戶可以使用類的定義來生成該類的對象,生成的對象將可以使用該類的所以組件。的對象將可以使用該類的所以組件。v類中包含兩種內(nèi)容:類中包含兩種內(nèi)容:(1)成員成員(field)域:是存儲(chǔ)數(shù)據(jù)項(xiàng)的變量。成員域也域:是存儲(chǔ)數(shù)據(jù)項(xiàng)的變量。成員域也稱稱。(2)方法方法(method):定義了用戶可以進(jìn)行的操作,:定義了用戶可以進(jìn)行的操作,也決定了利用類的對象可以做的事情。也決定了利用類的對象可以做的事情。v例例1. 定義了一個(gè)名為定義了一個(gè)名為SimplePoint 的類的類public class Simp
4、lePoint public int x = 0; /x為成員變量為成員變量 public int y = 0; /y為成員變量為成員變量 當(dāng)創(chuàng)建一個(gè)新的對象時(shí)(對該類實(shí)例化),當(dāng)創(chuàng)建一個(gè)新的對象時(shí)(對該類實(shí)例化), 就會(huì)就會(huì)為該對象及其成員分配空間,同時(shí)對成員變量進(jìn)行為該對象及其成員分配空間,同時(shí)對成員變量進(jìn)行初始化。初始化。v例例2 2 定義一個(gè)名為定義一個(gè)名為SimpleRectangleSimpleRectangle類類public class SimpleRectanglepublic class SimpleRectangle public intpublic int width
5、= 0; width = 0;public intpublic int height = 0; height = 0;public SimplePoint origin = new SimplePoint(); 例例3 public class Point public int x = 0; public int y = 0; / a constructor! public Point(int x, int y) this.x = x; this.y = y; new Point(44, 78)new Point(44, 78) 在聲明時(shí)使用關(guān)鍵字在聲明時(shí)使用關(guān)鍵字static。 只與類有關(guān),
6、被該類的所有對象共享。只與類有關(guān),被該類的所有對象共享。 未創(chuàng)建該類的對象時(shí),這些變量仍然存在。未創(chuàng)建該類的對象時(shí),這些變量仍然存在。 該類型變量與類的每個(gè)實(shí)例有關(guān)。該類型變量與類的每個(gè)實(shí)例有關(guān)。 該類的每個(gè)實(shí)例都有他自己的變量的副本和賦值。該類的每個(gè)實(shí)例都有他自己的變量的副本和賦值。類類Sphere的定義的定義public class Sphere /class variablestatic double PI=3.14;/instance variabledouble xCenter;double yCenter;double zCenter;double radius;3.14Spher
7、e.PI由所有對象共享由所有對象共享globexCenteryCenterzCenterradiusballxCenteryCenterzCenterradius提供了使用類定義中指定的變量進(jìn)行的操提供了使用類定義中指定的變量進(jìn)行的操作。作。只可以在特只可以在特定的對象中執(zhí)行。定的對象中執(zhí)行。使用使用static進(jìn)行聲進(jìn)行聲明,即使該類沒有對象存在也可以執(zhí)行。明,即使該類沒有對象存在也可以執(zhí)行。v注意:類方法不能引用實(shí)例變量。注意:類方法不能引用實(shí)例變量。v訪問靜態(tài)成員或靜態(tài)方法:訪問靜態(tài)成員或靜態(tài)方法:v例如:例如: double rootPi = Math.sqrt ( Math. PI
8、);v實(shí)例變量和實(shí)例方法只能通過實(shí)例變量和實(shí)例方法只能通過來調(diào)用,來調(diào)用,因?yàn)樵诙x中已經(jīng)和一個(gè)特定的對象相關(guān)。因?yàn)樵诙x中已經(jīng)和一個(gè)特定的對象相關(guān)。v例如:若有對象例如:若有對象ball存在,則:存在,則: double ballVolume = ball.volume();class 類名類名類的詳細(xì)定義;類的詳細(xì)定義; v 例如: class Sphere static final double PI=3.14; static int count=0; double radius; double xCenter; double yCenter; double zCenter; 是一個(gè)自包
9、含的代碼塊是一個(gè)自包含的代碼塊 有自己的名稱及可以重復(fù)使用的屬性有自己的名稱及可以重復(fù)使用的屬性 可以根據(jù)需要在程序多個(gè)不同的地方被執(zhí)行可以根據(jù)需要在程序多個(gè)不同的地方被執(zhí)行 可以使用其名字來調(diào)用方法可以使用其名字來調(diào)用方法 方法可以指定返回值的類型,若沒有返回值,則方法可以指定返回值的類型,若沒有返回值,則應(yīng)聲明方法的返回對象類型為應(yīng)聲明方法的返回對象類型為voidv 方法的基本結(jié)構(gòu)如下:方法的基本結(jié)構(gòu)如下:return_type methodName(arg1,arg2,argn)statement;v 方法的方法的出現(xiàn)在方法名后的大括號中,指定了在出現(xiàn)在方法名后的大括號中,指定了在方法調(diào)
10、用時(shí)需要向其傳遞的信息。方法調(diào)用時(shí)需要向其傳遞的信息。v 當(dāng)用戶調(diào)用方法時(shí)提供給形參的值稱為當(dāng)用戶調(diào)用方法時(shí)提供給形參的值稱為。v有返回值:有返回值:return return_value;v無返回值:無返回值:return 或或 不寫不寫v注意:如果方法有返回值,則返回值的類型要與聲注意:如果方法有返回值,則返回值的類型要與聲明方法時(shí)定義的返回值類型保持一致。明方法時(shí)定義的返回值類型保持一致。 定義了當(dāng)調(diào)用該方法時(shí)傳遞給該方法的類型定義了當(dāng)調(diào)用該方法時(shí)傳遞給該方法的類型及其值,包括參數(shù)類型和參數(shù)名,并出現(xiàn)在方法定及其值,包括參數(shù)類型和參數(shù)名,并出現(xiàn)在方法定義的形參列表中。義的形參列表中。定義
11、了執(zhí)行方法時(shí)傳遞給形參的值,而且實(shí)定義了執(zhí)行方法時(shí)傳遞給形參的值,而且實(shí)參的值通過執(zhí)行該方法時(shí)的形參名來引用。參的值通過執(zhí)行該方法時(shí)的形參名來引用。 (1)實(shí)參值的類型一定要和定義方法時(shí)對應(yīng)的形)實(shí)參值的類型一定要和定義方法時(shí)對應(yīng)的形參類型保持一致。參類型保持一致。 (2)對于非類對象的數(shù)據(jù),實(shí)參到形參的數(shù)據(jù)采)對于非類對象的數(shù)據(jù),實(shí)參到形參的數(shù)據(jù)采用用的方法。的方法。 示例程序示例程序: VariableDemovfinal形參形參 意義:如果將方法中的形參聲明為意義:如果將方法中的形參聲明為final,可以防,可以防止再調(diào)用該方法時(shí),實(shí)參的值被修改。止再調(diào)用該方法時(shí),實(shí)參的值被修改。 說明
12、:說明:final形參對于形參對于的方式?jīng)]有意義,而的方式?jīng)]有意義,而對于對于的形參有意義,這樣做可以防止的形參有意義,這樣做可以防止對實(shí)參對象的誤操作。對實(shí)參對象的誤操作。 在定義的方法前面加關(guān)鍵字在定義的方法前面加關(guān)鍵字static。v例:例:class Sphereint getCount() return count; v 實(shí)例方法可以訪問類的任何數(shù)據(jù)成員,直接使用即可。實(shí)例方法可以訪問類的任何數(shù)據(jù)成員,直接使用即可。class Spherestatic final double PI=3.14;static int count=0;double radius;double xCent
13、er;double yCenter;double zCenter; static int getCount() return count; double volume() return 4.0/3.0*PI*radius*radius*radius; v每個(gè)實(shí)例方法都有一個(gè)名為每個(gè)實(shí)例方法都有一個(gè)名為this的變量,它引用調(diào)的變量,它引用調(diào)用該方法的當(dāng)前對象,即當(dāng)一個(gè)方法引用類的一個(gè)用該方法的當(dāng)前對象,即當(dāng)一個(gè)方法引用類的一個(gè)實(shí)例變量時(shí),由編譯器默認(rèn)使用。實(shí)例變量時(shí),由編譯器默認(rèn)使用。v例如,類中有實(shí)例變量例如,類中有實(shí)例變量value、a、b,則如下兩條,則如下兩條語句等價(jià)。語句等價(jià)。 va
14、lue = a+b; this.value = this.a+this.b; vthis是是Java的一個(gè)關(guān)鍵字,表示某個(gè)對象。的一個(gè)關(guān)鍵字,表示某個(gè)對象。 vthis可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可以可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。出現(xiàn)在類方法中。 vthis關(guān)鍵字出現(xiàn)在類的構(gòu)造方法中時(shí),代表使用該關(guān)鍵字出現(xiàn)在類的構(gòu)造方法中時(shí),代表使用該構(gòu)造方法所創(chuàng)建的對象。構(gòu)造方法所創(chuàng)建的對象。 vthis關(guān)鍵字出現(xiàn)在類的實(shí)例方法中時(shí),代表正在調(diào)關(guān)鍵字出現(xiàn)在類的實(shí)例方法中時(shí),代表正在調(diào)用該方法的當(dāng)前對象。用該方法的當(dāng)前對象。 class Sphere static final
15、 double PI = 3.14; / 初始化靜態(tài)成員初始化靜態(tài)成員 double radius = 5.0; /初始化非靜態(tài)成員初始化非靜態(tài)成員 double xCenter = 10.0; /初始化非靜態(tài)成員初始化非靜態(tài)成員 指位于括號中的一個(gè)代碼塊,它在類的指位于括號中的一個(gè)代碼塊,它在類的對象生成之前執(zhí)行對象生成之前執(zhí)行1、靜態(tài)初始化塊:使用、靜態(tài)初始化塊:使用static定義的代碼塊,當(dāng)類定義的代碼塊,當(dāng)類裝載到系統(tǒng)時(shí)將執(zhí)行一次。靜態(tài)初始化塊只能初裝載到系統(tǒng)時(shí)將執(zhí)行一次。靜態(tài)初始化塊只能初始化類的靜態(tài)數(shù)據(jù)成員。始化類的靜態(tài)數(shù)據(jù)成員。2、非靜態(tài)初始化塊:對每個(gè)要生成的對象執(zhí)行一、非靜
16、態(tài)初始化塊:對每個(gè)要生成的對象執(zhí)行一次,可以初始化類的實(shí)例變量。次,可以初始化類的實(shí)例變量。 函數(shù)名與類名相同函數(shù)名與類名相同,且不指定返回對象,且不指定返回對象類型,可以有參數(shù),也可以無參數(shù),一個(gè)類中可以類型,可以有參數(shù),也可以無參數(shù),一個(gè)類中可以有多個(gè)構(gòu)造函數(shù)。有多個(gè)構(gòu)造函數(shù)。在對象實(shí)例化時(shí),系統(tǒng)首先調(diào)用構(gòu)在對象實(shí)例化時(shí),系統(tǒng)首先調(diào)用構(gòu)造函數(shù),對生成的對象的實(shí)例變量進(jìn)行初始化,其造函數(shù),對生成的對象的實(shí)例變量進(jìn)行初始化,其由系統(tǒng)默認(rèn)調(diào)用。由系統(tǒng)默認(rèn)調(diào)用。如果類中沒有顯示聲明構(gòu)造函數(shù),則系統(tǒng)會(huì)如果類中沒有顯示聲明構(gòu)造函數(shù),則系統(tǒng)會(huì)提供一個(gè)默認(rèn)的構(gòu)造函數(shù),其無參,并且不做任何提供一個(gè)默認(rèn)的構(gòu)造
17、函數(shù),其無參,并且不做任何工作。工作。 例如:例如:class Sphere double radius, xCenter, yCenter, zCenter; Sphere(double theRadius, double x, double y, double z) radius = theRadius; xCenter = x; yCenter = y; zCenter = z; v如果沒有為類定義任何構(gòu)造函數(shù),編譯器將自動(dòng)提如果沒有為類定義任何構(gòu)造函數(shù),編譯器將自動(dòng)提供一個(gè)默認(rèn)構(gòu)造函數(shù),但其沒有任何參數(shù),也沒有供一個(gè)默認(rèn)構(gòu)造函數(shù),但其沒有任何參數(shù),也沒有任何語句,僅提供一個(gè)生成對象的入
18、口。任何語句,僅提供一個(gè)生成對象的入口。v注意注意: 如果類中已有構(gòu)造函數(shù),則系統(tǒng)將不再提供如果類中已有構(gòu)造函數(shù),則系統(tǒng)將不再提供默認(rèn)構(gòu)造函數(shù),如果此時(shí)需要一個(gè)無參構(gòu)造函數(shù),默認(rèn)構(gòu)造函數(shù),如果此時(shí)需要一個(gè)無參構(gòu)造函數(shù),則需要顯示定義一個(gè)。則需要顯示定義一個(gè)。 Sphere ball;v生成類對象生成類對象 ball = new Sphere(10.0, 1.0, 1.0, 1.0); 把對象當(dāng)作實(shí)參傳遞給一個(gè)方法的時(shí)候,把對象當(dāng)作實(shí)參傳遞給一個(gè)方法的時(shí)候,采用引用傳遞的機(jī)制。即實(shí)參和形參引用的是同一個(gè)對象,采用引用傳遞的機(jī)制。即實(shí)參和形參引用的是同一個(gè)對象,沒有對實(shí)際對象進(jìn)行復(fù)制。沒有對實(shí)際對
19、象進(jìn)行復(fù)制。 對象的生存期由引用它的變量決定,即對象對象的生存期由引用它的變量決定,即對象將在引用它的變量的作用域之外消失。將在引用它的變量的作用域之外消失。v 處理消失對象的過程稱為處理消失對象的過程稱為。v 程序見:程序見:CreateSpheres.java 和和 Sphere.java注意:將兩個(gè)源程序放在一個(gè)目錄下,在注意:將兩個(gè)源程序放在一個(gè)目錄下,在JDKJDK編譯器下,只需編譯包含編譯器下,只需編譯包含main()main()定義的文件,定義的文件,就可以編譯該程序涉及到的所有源文件。就可以編譯該程序涉及到的所有源文件。在一個(gè)類中,用同樣的名字定義的多在一個(gè)類中,用同樣的名字定
20、義的多個(gè)方法。個(gè)方法。各重載函數(shù)的形參列表必須不相同。各重載函數(shù)的形參列表必須不相同。v注意注意: 函數(shù)返回值不能作為判斷重載的條件。函數(shù)返回值不能作為判斷重載的條件。方法的方法的統(tǒng)稱為統(tǒng)稱為簽名。簽名。v類中的每個(gè)方法的簽名都必須唯一,編譯器將以類中的每個(gè)方法的簽名都必須唯一,編譯器將以此判斷該調(diào)用那一個(gè)函數(shù)。此判斷該調(diào)用那一個(gè)函數(shù)。v 如果希望通過不同的初始化數(shù)據(jù)產(chǎn)生產(chǎn)生類的對象,如果希望通過不同的初始化數(shù)據(jù)產(chǎn)生產(chǎn)生類的對象,則可以采用重載構(gòu)造函數(shù)的方法。例如:則可以采用重載構(gòu)造函數(shù)的方法。例如:Sphere(double x, double y, double z) xCenter =
21、x; yCenter = y; zCenter = z; radius = 1.0; +count;Sphere() xCenter = 0; yCenter = 0; zCenter = 0; radius = 1.0; +count;v在一個(gè)構(gòu)造函數(shù)中調(diào)用構(gòu)造函數(shù)在一個(gè)構(gòu)造函數(shù)中調(diào)用構(gòu)造函數(shù): 類的構(gòu)造函數(shù)類的構(gòu)造函數(shù)可以在其可以在其可執(zhí)行語句中調(diào)用該類的另一個(gè)可執(zhí)行語句中調(diào)用該類的另一個(gè)構(gòu)造函數(shù),可以省去大量的重復(fù)代碼。構(gòu)造函數(shù),可以省去大量的重復(fù)代碼??梢允褂每梢允褂胻his作為名稱,在其后面作為名稱,在其后面的括號中根據(jù)需要列出適當(dāng)?shù)膮?shù)。的括號中根據(jù)需要列出適當(dāng)?shù)膮?shù)。Sphere
22、() radius = 1.0; +count;Sphere(double x, double y, double z) this(); / 注意在第一句調(diào)用注意在第一句調(diào)用 xCenter = x; yCenter = y; zCenter = z; Sphere ball = new Sphere(10.0, 10,0, 0.0); Sphere newBall = ball;v則則newBall將引用與將引用與ball相同的對象,而沒有生相同的對象,而沒有生成新對象,在修改這個(gè)對象時(shí),成新對象,在修改這個(gè)對象時(shí),ball和和newBall都發(fā)生變化。都發(fā)生變化。v可以采用復(fù)制構(gòu)造函數(shù)的方
23、法,將原對象作為參可以采用復(fù)制構(gòu)造函數(shù)的方法,將原對象作為參數(shù),通過復(fù)制對象中的實(shí)例變量,來生成新的對數(shù),通過復(fù)制對象中的實(shí)例變量,來生成新的對象。象。例如:例如:Sphere(final Sphere oldSphere) radius = oldSphere.radius; xCenter= oldSphere.xCenter; yCenter = oldSphere.yCenter; zCenter = oldSphere.zCenter; +count; Sphere ball = new Sphere(10.0, 10,0, 0.0);Sphere newBall = new Sph
24、ere(ball);v本例作為上機(jī)練習(xí)題,又學(xué)生自己調(diào)試本例作為上機(jī)練習(xí)題,又學(xué)生自己調(diào)試v遞歸:一個(gè)方法調(diào)用自己的過程被稱為遞歸。遞歸:一個(gè)方法調(diào)用自己的過程被稱為遞歸。v遞歸分類:遞歸分類: 直接遞歸直接遞歸 間接遞歸間接遞歸v例題:編寫一個(gè)方法計(jì)算一個(gè)變量的整數(shù)冪。例題:編寫一個(gè)方法計(jì)算一個(gè)變量的整數(shù)冪。v程序見:程序見:PowerCalc.javav本例作為上機(jī)練習(xí)題,又學(xué)生自己調(diào)試本例作為上機(jī)練習(xí)題,又學(xué)生自己調(diào)試import java.util.Scanner;public class Digui static long fac(int n) if(n=1) return 1; e
25、lse return n*fac(n-1); public static void main(String args) int k; long f; Scanner sc=new Scanner(System.in); System.out.println(請輸入請輸入K的值的值:); k=sc.nextInt(); f=fac(k); System.out.println(f=+f); 遞歸級別 執(zhí)行操作 0 fac(5) 1 fac(4) 2 fac(3) 3 fac(2) 4 fac(1) 4 返回1 fac(1) 3 返回2 fac(2) 2 返回6 fac(3) 1 返回24 fac
26、(4) 0 返回120 fac(5)v為了便于管理大型軟件系統(tǒng)中數(shù)目眾多的類,解決為了便于管理大型軟件系統(tǒng)中數(shù)目眾多的類,解決類命名沖突的問題,類命名沖突的問題,Java引入了包(引入了包(package)。)。javalangSystemioString是有唯一命名的類的集合是有唯一命名的類的集合,應(yīng)著文件系統(tǒng)應(yīng)著文件系統(tǒng)的目錄層次結(jié)構(gòu)的目錄層次結(jié)構(gòu)v 包的作用:在一個(gè)包中使用的類名不會(huì)影響到另一個(gè)包中或包的作用:在一個(gè)包中使用的類名不會(huì)影響到另一個(gè)包中或編寫的程序中可能出現(xiàn)的類名。編寫的程序中可能出現(xiàn)的類名。v 例如:在默認(rèn)包中的例如:在默認(rèn)包中的java.lang中使用的類中使用的類St
27、ring,全名,全名是是java.lang.Stringv package語句必須是文件中的第一條語句。也就是說,在語句必須是文件中的第一條語句。也就是說,在package語句之前,除了空白和注釋之外不能有任何語句。語句之前,除了空白和注釋之外不能有任何語句。v 如果不加如果不加package語句,則指定為缺省包或無名包。語句,則指定為缺省包或無名包。v 在在package語句中,用語句中,用“.”來指明包(目錄)的層次。來指明包(目錄)的層次。v 為在包為在包Geometry中包含類中包含類Sphere,文件,文件Sphere.java中應(yīng)包含如下內(nèi)容:中應(yīng)包含如下內(nèi)容: package G
28、eometry; / 包語句,需放在第一行包語句,需放在第一行 public class Sphere v 其它類若想包含在其它類若想包含在Geometry中,也必須在類定義的開始中,也必須在類定義的開始處包含同一條語句,并且所有的類文件都存儲(chǔ)在與包名相同處包含同一條語句,并且所有的類文件都存儲(chǔ)在與包名相同的目錄下。的目錄下。v 注意:若包中的類想被包外訪問,則類和類中的函數(shù)都應(yīng)定注意:若包中的類想被包外訪問,則類和類中的函數(shù)都應(yīng)定義為義為public。一個(gè)包中可以有多個(gè)分類,例如已經(jīng)開發(fā)了多一個(gè)包中可以有多個(gè)分類,例如已經(jīng)開發(fā)了多組處理幾何問題的類:組處理幾何問題的類:(1)對文件:)對文件
29、:v 處理處理2D圖形的文件加入:圖形的文件加入:package Geometry.Shapes2D;v 處理處理3D圖形的文件加入:圖形的文件加入:package Geometry.Shapes3D;(2)對目錄:)對目錄:v 處理處理2D圖形的文件存放在:圖形的文件存放在:GeometryShapes2d目錄目錄下下v 處理處理3D圖形的文件存放在:圖形的文件存放在:GeometryShapes3d目錄目錄下下 javac classpath “c:temp” filename.java是指包含該包目錄的上一級目錄的路徑,注意不包含是指包含該包目錄的上一級目錄的路徑,注意不包含該包目錄名本
30、身。該包目錄名本身。v 例如,包的源文件存儲(chǔ)在例如,包的源文件存儲(chǔ)在C:tempGeometry下,則包路下,則包路徑為:徑為:C:temp。 方法一:設(shè)置環(huán)境變量方法一:設(shè)置環(huán)境變量CLASSPATH 方法二:使用方法二:使用-classpath來指明包的位置來指明包的位置 例如:例如: 擴(kuò)展包是擴(kuò)展包是.java文件,存放在文件,存放在JDK的的ext目錄下,在此目錄下目錄下,在此目錄下的的.jar文件,將自動(dòng)成為可訪問的文件,不需要設(shè)置文件,將自動(dòng)成為可訪問的文件,不需要設(shè)置CLASSPATH環(huán)境變量或環(huán)境變量或-classpath選項(xiàng)。選項(xiàng)。 命令格式:命令格式: 此命令將生成此命令將
31、生成Geometry.jar,并在其中加入位于,并在其中加入位于Geometry目錄下的所有的目錄下的所有的.class文件,為使這個(gè)包對任何程序都可用,文件,為使這個(gè)包對任何程序都可用,可將其復(fù)制到可將其復(fù)制到JDK的的ext目錄下。目錄下。把一個(gè)包中的所有或任何類加把一個(gè)包中的所有或任何類加入到程序代碼中,入到程序代碼中,v例如引入整個(gè)包:例如引入整個(gè)包: v例如引入包中的某個(gè)類例如引入包中的某個(gè)類:v如前例,包如前例,包Geometry.Shapes3D中的類中的類Sphere的全名是的全名是Geometry.Shapes3D.Sphere,這樣可以很,這樣可以很好的避免了類的重名問題。
32、好的避免了類的重名問題。v 如果不使用導(dǎo)入語句,仍然可以使用某個(gè)類,例如果不使用導(dǎo)入語句,仍然可以使用某個(gè)類,例如:如: Geometry.Shapes3D.Sphere ball = Geometry.Shapes3D.Sphere(10.0, 1.0, 1.0, 1.0);v計(jì)算圓面積公式計(jì)算圓面積公式:*r*r;v 這里的這里的Math.PI即為一靜態(tài)成員,可以通過從類即為一靜態(tài)成員,可以通過從類Math中導(dǎo)入中導(dǎo)入PI成員名來刪除成員名來刪除PI前綴前綴Math,例如:,例如: import static java.lang.Math.PI;v也可采用也可采用 import stati
33、c java.lang.Math.* 來來導(dǎo)入該類的所有靜態(tài)成員,此時(shí)即可直接使用導(dǎo)入該類的所有靜態(tài)成員,此時(shí)即可直接使用sqrt(),random()等方法,但這樣也增加了名字等方法,但這樣也增加了名字沖突的概率。沖突的概率。 一個(gè)類的方法和變量根據(jù)其設(shè)定的訪問屬性,如一個(gè)類的方法和變量根據(jù)其設(shè)定的訪問屬性,如果屬于同一個(gè)包,或其聲明為果屬于同一個(gè)包,或其聲明為public,則可以被,則可以被其它類訪問。其它類訪問。屬性屬性允許的訪問允許的訪問default(無訪問屬性)(無訪問屬性)來自同一包中任何類的方法訪問來自同一包中任何類的方法訪問public來自任何類的方法的訪問來自任何類的方法的
34、訪問private只允許來自該類內(nèi)部的方法訪問只允許來自該類內(nèi)部的方法訪問protected來自同一包中任何類以及該類的來自同一包中任何類以及該類的任何地方的任何子類的方法訪問任何地方的任何子類的方法訪問u指定類成員的訪問屬性,必須在聲明語句的開指定類成員的訪問屬性,必須在聲明語句的開始部分加上相應(yīng)的關(guān)鍵字。例如:始部分加上相應(yīng)的關(guān)鍵字。例如:public class Point public Point(double xVal, double yVal)x=xVal; y=yVal; public double getX() return x; /訪問器方法訪問器方法 public doub
35、le setX(double inputX) x=inputX; /增變方法增變方法 private double x, y;u一般,一個(gè)一般,一個(gè)public類的變量應(yīng)該聲明為類的變量應(yīng)該聲明為private,并將其外部調(diào)用的方法聲明為并將其外部調(diào)用的方法聲明為public。u注意:注意:1、如果類中一些成員被設(shè)置成、如果類中一些成員被設(shè)置成final,其又被類,其又被類外使用,可將其聲明為外使用,可將其聲明為public。2、若成員僅供該類內(nèi)部使用,應(yīng)指定為、若成員僅供該類內(nèi)部使用,應(yīng)指定為private。3、若某些成員只是一種使用函數(shù)和標(biāo)準(zhǔn)數(shù)值的、若某些成員只是一種使用函數(shù)和標(biāo)準(zhǔn)數(shù)值的容
36、器,可將其指定為容器,可將其指定為public。例如。例如Math中的函數(shù)。中的函數(shù)。在一個(gè)類中定義另外一個(gè)類,這個(gè)類就叫做嵌套在一個(gè)類中定義另外一個(gè)類,這個(gè)類就叫做嵌套類或內(nèi)部類或內(nèi)置類類或內(nèi)部類或內(nèi)置類。u內(nèi)部類可以將邏輯上相關(guān)的一組類組織起來,并由外部類內(nèi)部類可以將邏輯上相關(guān)的一組類組織起來,并由外部類(outer class)來控制內(nèi)部類的可見性。來控制內(nèi)部類的可見性。u當(dāng)建立一個(gè)當(dāng)建立一個(gè)inner class時(shí),其對象就擁有了與外部類對象時(shí),其對象就擁有了與外部類對象之間的一種關(guān)系,這是通過一個(gè)特殊的之間的一種關(guān)系,這是通過一個(gè)特殊的this reference形成形成的,的,使得
37、內(nèi)部類對象可以隨意的訪問外部類中所有的成員。使得內(nèi)部類對象可以隨意的訪問外部類中所有的成員。包含嵌套類,但本身不是嵌套類的類。包含嵌套類,但本身不是嵌套類的類。public class Outside public class Inside class Outer private int index = 100; void print() Inner i = new Inner(); i.print(); class Inner void print() System.out.println(index); class Test public static void main(String a
38、rgs) Outer o = new Outer(); o.print(); public class Outer private String myString = outer; private String outerString =outer outer!; void test() System.out.print(test ); System.out.println(myString); new Inner().testInner(); private void test2() System.out.print(test2 ); System.out.println(myString)
39、; class Inner private String myString = inner; private void testInner() System.out.print(testInner ); System.out.println(myString); System.out.println(outerString); test2(); othisimaino.printi.printthis棧內(nèi)存棧內(nèi)存堆內(nèi)存堆內(nèi)存OuterOuter類對象類對象InnerInner類對象類對象Outer.thisOuter.thisu將嵌套類聲明為將嵌套類聲明為static就可以生成獨(dú)立于外部類對就
40、可以生成獨(dú)立于外部類對象的嵌套類對象,而不用考慮是否已經(jīng)生成了外部對象的嵌套類對象,而不用考慮是否已經(jīng)生成了外部對象。象。注意:注意:1、靜態(tài)嵌套類可以有靜態(tài)成員,而非靜態(tài)嵌套類則、靜態(tài)嵌套類可以有靜態(tài)成員,而非靜態(tài)嵌套類則不能有靜態(tài)成員。不能有靜態(tài)成員。2、靜態(tài)嵌套類的成員可以訪問頂層類的靜態(tài)成員。、靜態(tài)嵌套類的成員可以訪問頂層類的靜態(tài)成員。3、非靜態(tài)嵌套類可以訪問任何頂層類的成員,并且、非靜態(tài)嵌套類可以訪問任何頂層類的成員,并且可以訪問相同頂層類下的靜態(tài)嵌套類的靜態(tài)成員。可以訪問相同頂層類下的靜態(tài)嵌套類的靜態(tài)成員。u在方法中定義的內(nèi)部類,如果要訪問方法中定義的在方法中定義的內(nèi)部類,如果要訪
41、問方法中定義的本地變量或方法的參數(shù),則變量必須被聲明本地變量或方法的參數(shù),則變量必須被聲明final。u內(nèi)部類可以聲明為內(nèi)部類可以聲明為private或或protected;還可以聲;還可以聲明為明為abstract或或final。u內(nèi)部類可以聲明為內(nèi)部類可以聲明為static的,但此時(shí)就不能再使用的,但此時(shí)就不能再使用外部類的非外部類的非static的成員變量和非的成員變量和非static的成員方法;的成員方法;u非非static的內(nèi)部類中的成員不能聲明為的內(nèi)部類中的成員不能聲明為static的,只的,只有在頂層類或有在頂層類或static的內(nèi)部類中才可聲明的內(nèi)部類中才可聲明static成員。成員。u我們?yōu)槭裁词褂脙?nèi)部類我們?yōu)槭裁词褂脙?nèi)部類1、在內(nèi)部類(、在內(nèi)部類(inner class)中,可以隨意的訪問外)中,可以隨意的訪問外部類的成員,這可以讓我們更好地組織管理我們的代部類的成員,這可以讓我們更好地組織管理我們的代碼,增強(qiáng)代碼的可讀性
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年稀土-鐵超磁致伸縮單晶材料合作協(xié)議書
- 第12課《自定主題活動(dòng)三:學(xué)系紅領(lǐng)巾》(教學(xué)設(shè)計(jì))-2023-2024學(xué)年一年級下冊綜合實(shí)踐活動(dòng)浙教版
- 第七單元(教學(xué)設(shè)計(jì))六年級語文上冊同步備課系列(統(tǒng)編版)
- 二年級數(shù)學(xué)100以內(nèi)加減法豎式計(jì)算題競賽考核口算題大全附答案
- 門頭溝污水池防腐施工方案
- 第四章 第2節(jié) 質(zhì)量的測量 教學(xué)設(shè)計(jì)教學(xué)反思-2023-2024學(xué)年浙教版科學(xué)七年級上冊
- Unit 2 Improving Yourself Developing ideas Writing a reflection 教學(xué)設(shè)計(jì)-2024-2025學(xué)年高中英語外研版(2019)選擇性必修第二冊
- 鋼結(jié)構(gòu)上接地線施工方案
- 2025至2031年中國粉末燒結(jié)觸頭行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國橫梁幕墻型材行業(yè)投資前景及策略咨詢研究報(bào)告
- 2023年廣東省中考試卷(語數(shù)英物化史生等共11套)帶答案解析
- DFX工藝設(shè)計(jì)方法介紹
- 洪恩識字識字卡(001-100)可直接打印剪裁
- 違反八項(xiàng)規(guī)定問題典型案例、法規(guī)依據(jù)和關(guān)注點(diǎn)
- J-STD-033D處理包裝運(yùn)輸和使用濕度回流和過程敏感設(shè)備
- 文聯(lián)述職報(bào)告
- SCI期刊的名稱縮寫與全稱對照表
- 人機(jī)料法環(huán)測檢查表
- 桂西北丹池成礦帶主要金屬礦床成礦特征及成礦規(guī)律
- 一年級上冊綜合實(shí)踐活動(dòng)導(dǎo)學(xué)案 各種各樣的汽車 全國通用
- 婦產(chǎn)科護(hù)理學(xué)會(huì)陰部手術(shù)病人的護(hù)理
評論
0/150
提交評論