第4章 包、接口、類庫_第1頁
第4章 包、接口、類庫_第2頁
第4章 包、接口、類庫_第3頁
第4章 包、接口、類庫_第4頁
第4章 包、接口、類庫_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第4章 包、接口、類庫4.1包n包的概念:包的概念:n包是組織包是組織java程序中類的一種手段。程序中類的一種手段。n包實際上是類和接口的集合,利用包可以把常用的類或功能相似包實際上是類和接口的集合,利用包可以把常用的類或功能相似的類放在一個程序包中,就像文件放在文件夾中一樣,使類的管的類放在一個程序包中,就像文件放在文件夾中一樣,使類的管理更清晰,更有條理。理更清晰,更有條理。n包是一種松散的類集合,一般不要求處于同一包中的類有明確的包是一種松散的類集合,一般不要求處于同一包中的類有明確的相互關系,但通常把需要一起工作的類放在一個包中。相互關系,但通常把需要一起工作的類放在一個包中。n使用

2、包的一個主要原因還在于保證類名的惟一性。假設兩個程序使用包的一個主要原因還在于保證類名的惟一性。假設兩個程序員都提供了一個員都提供了一個employee類。只要他們把類放在不同的包中,類。只要他們把類放在不同的包中,那么就不會有沖突。那么就不會有沖突。 如:如: department1.employee department2.employee4.1包n包的創(chuàng)建包的創(chuàng)建n格式:格式:package 程序包名程序包名;nnote:n若若package未指定,則所有的類都被組合到一個未未指定,則所有的類都被組合到一個未命名的缺省包中,不能被其他包中的類引用。命名的缺省包中,不能被其他包中的類引用。

3、nPackage語句必須放在語句必須放在java源文件的第一行,該行源文件的第一行,該行前可以有空格及注釋行。前可以有空格及注釋行。n創(chuàng)建包就是在當前文件夾下創(chuàng)建一個子文件夾,以便創(chuàng)建包就是在當前文件夾下創(chuàng)建一個子文件夾,以便存放這個包中包含的所有類文件。存放這個包中包含的所有類文件?!?”代表目錄分隔代表目錄分隔符。符。package SubClass;package MyClass.SubClass;4.1包n包的引用包的引用n將類組織成包的目的是為了更好地利用包中的類,為了使用將類組織成包的目的是為了更好地利用包中的類,為了使用java中已提供的類,需要用中已提供的類,需要用import

4、語句來引入所需要的類語句來引入所需要的類 (在每個類名前加上完整的包名的方式也可訪問該類,但顯(在每個類名前加上完整的包名的方式也可訪問該類,但顯然重復而冗長)。然重復而冗長)。n格式:格式: import package1.package2.(classname或或*) eg: import java.awt.*; import java.util.Date;nNote: 編譯器為所有程序自動引入包編譯器為所有程序自動引入包java.lang,因此不必用因此不必用import語句語句引入它所包含的所有類,但若是需要使用其他包中的類,則必須用引入它所包含的所有類,但若是需要使用其他包中的類,則

5、必須用import語句引入。語句引入。 使用使用*只能表示本層次的所有類,而不包括子層次下的類。只能表示本層次的所有類,而不包括子層次下的類。import語句必須先于所有類的聲明語句必須先于所有類的聲明4.1包n編譯和運行包中的類編譯和運行包中的類n編譯編譯 使用使用javac的的 d 參數(shù)來指定包的根目錄參數(shù)來指定包的根目錄 在在classpath中添加包的根目錄中添加包的根目錄n運行方式運行方式: 進入啟動運行類所在的目錄(如果已經(jīng)在進入啟動運行類所在的目錄(如果已經(jīng)在classpath中添加中添加了啟動運行類所在的目錄,則在任何位置下都可以)了啟動運行類所在的目錄,則在任何位置下都可以)

6、 使用使用 java 運行類的類名運行類的類名 的方式運行程序的方式運行程序.n舉例見:舉例見:njavacode包的使用包的使用Mypk2-rectangle文件夾文件夾4.1包nJava源文件與類文件的管理源文件與類文件的管理n在應用系統(tǒng)目錄下分別創(chuàng)建源文件目錄與類文件目錄,在應用系統(tǒng)目錄下分別創(chuàng)建源文件目錄與類文件目錄,并把類文件目錄加入到并把類文件目錄加入到classpath環(huán)境變量中環(huán)境變量中 比如比如,可以創(chuàng)建下列目錄:可以創(chuàng)建下列目錄: D:javaworksource作為存放源文件的頂層(根)路作為存放源文件的頂層(根)路徑徑 D:javaworkclasses作為存放類和接口

7、的包的根路作為存放類和接口的包的根路徑徑n每個源文件都存放在每個源文件都存放在source目錄中以包名為相對路目錄中以包名為相對路徑的子目錄下;徑的子目錄下;n編譯后產(chǎn)生的類文件以所屬包名為相對路徑,存儲在編譯后產(chǎn)生的類文件以所屬包名為相對路徑,存儲在classes目錄下。目錄下。4.1包n上機練習:上機練習:n1、編譯運行、編譯運行javacode包的使用包的使用mypk文件夾中文件夾中的例子的例子 D:javaworksource-放放Paker.java,PakerTest.java D:javaworkclasses-放前面兩個文件中編譯產(chǎn)生的放前面兩個文件中編譯產(chǎn)生的類文件類文件n2

8、、將、將PakerTest.java代碼去除代碼去除import語句,加語句,加入到入到Paker.java源文件的后面。保存源文件的后面。保存Paker.java,編譯運行編譯運行Paker.javan3、p212,實驗五,實驗五,1.基本指導(指導內(nèi)容基本指導(指導內(nèi)容1)。)。4.2 接口nJava中的接口是一系列方法的聲明,是一些方法特征的集中的接口是一系列方法的聲明,是一些方法特征的集合合n一個接口只有方法的特征沒有方法的實現(xiàn),因此這些方法可一個接口只有方法的特征沒有方法的實現(xiàn),因此這些方法可以在不同的地方被不同的類實現(xiàn),而這些實現(xiàn)可以具有不同以在不同的地方被不同的類實現(xiàn),而這些實現(xiàn)

9、可以具有不同的行為(功能)。的行為(功能)。n Java引入接口的概念來彌補類的單一繼承所帶來的缺陷。引入接口的概念來彌補類的單一繼承所帶來的缺陷。(一個類可以實現(xiàn)多個接口,一個接口可以繼承多個父接口)(一個類可以實現(xiàn)多個接口,一個接口可以繼承多個父接口)4.2.1 接口的定義(聲明)n接口的定義和類的定義比較相近,但使用接口的定義和類的定義比較相近,但使用的是的是interface關鍵字。關鍵字。n接口定義的語法:接口定義的語法:修飾符修飾符 interface 接口名接口名extends 父接口名列表父接口名列表/常量域聲明常量域聲明public static final 域類型域類型 域

10、名常量值域名常量值;/抽象方法聲明抽象方法聲明public abstract 返回值類型返回值類型 方法名方法名(參數(shù)列表)參數(shù)列表);n接口的修飾符為:缺省或接口的修飾符為:缺省或publicn接口定義舉例:接口定義舉例:n見見javacode接口接口DriveControl.java,Repairable.java4.2.1 接口的定義n接口定義的特點:接口定義的特點:n接口不包含方法的任何實現(xiàn)接口不包含方法的任何實現(xiàn),都是抽象方法都是抽象方法 接口的功能實現(xiàn)是在實現(xiàn)了這個接口的各個類中完成的,由這接口的功能實現(xiàn)是在實現(xiàn)了這個接口的各個類中完成的,由這些類來具體定義接口中所有抽象方法的方法

11、體。些類來具體定義接口中所有抽象方法的方法體。 在接口中只能給出這些抽象方法的方法名、返回值和參數(shù)列表,在接口中只能給出這些抽象方法的方法名、返回值和參數(shù)列表,而不能定義方法體。而不能定義方法體。n接口中的方法接口中的方法都是具有都是具有public和和abstract屬性屬性的方的方法,故而這些修飾符也可以省略。法,故而這些修飾符也可以省略。n接口中定義的域必須是靜態(tài)或者擁有接口中定義的域必須是靜態(tài)或者擁有final控制符,字控制符,字段自動為段自動為public static final類型。(很少在接口類型。(很少在接口中定義域變量)中定義域變量)n接口中不包含構造方法的定義(即接口不能

12、直接用來接口中不包含構造方法的定義(即接口不能直接用來創(chuàng)建對象)創(chuàng)建對象)4.2.2 接口的實現(xiàn)n接口中定義的方法需要在具體的類中實現(xiàn),這個過程稱接口中定義的方法需要在具體的類中實現(xiàn),這個過程稱為為接口的實現(xiàn)接口的實現(xiàn)。n用用implements關鍵字在類的聲明部分聲明該類將實現(xiàn)關鍵字在類的聲明部分聲明該類將實現(xiàn)哪些接口。哪些接口。n類實現(xiàn)接口舉例:類實現(xiàn)接口舉例:njavacode接口文件夾接口文件夾,Car.java和和DriveControl.java。n接口可以作為一種引用類型使用接口可以作為一種引用類型使用(參見參見Car.java和和 DriveControl.java ): Dr

13、iveControl control=new Car(); control.startEngine();4.2.2 接口的實現(xiàn)n接口實現(xiàn)的注意事項:接口實現(xiàn)的注意事項:n一個類可以同時實現(xiàn)多個接口。對多個接口的實現(xiàn)是一個類可以同時實現(xiàn)多個接口。對多個接口的實現(xiàn)是在在implements后面跟用逗號隔開的接口名列表。后面跟用逗號隔開的接口名列表。n一個一個非抽象類非抽象類實現(xiàn)接口的時候,類中必須包含所有接實現(xiàn)接口的時候,類中必須包含所有接口中定義的方法實現(xiàn)。口中定義的方法實現(xiàn)。 (如果不需要某個方法,也要將其定義成一個空方法體的方(如果不需要某個方法,也要將其定義成一個空方法體的方法)。法)。n

14、對接口中方法進行實現(xiàn),必須顯式地使用對接口中方法進行實現(xiàn),必須顯式地使用public控制控制符,否則視為對接口定義方法訪問權限的削弱。符,否則視為對接口定義方法訪問權限的削弱。n對接口中方法進行實現(xiàn),類中對應的實現(xiàn)方法的對接口中方法進行實現(xiàn),類中對應的實現(xiàn)方法的方法方法名、方法返回值和方法的參數(shù)列表名、方法返回值和方法的參數(shù)列表形式必須一致,否形式必須一致,否則視為一個新的方法的重載。則視為一個新的方法的重載。4.2.2 接口的實現(xiàn)n實現(xiàn)多個接口的案例:實現(xiàn)多個接口的案例:(見見Car.java, DriveControl.java , Repairable.java)n多個類實現(xiàn)同一個接口的

15、例子:見多個類實現(xiàn)同一個接口的例子:見music.javan上機練習:上機練習:np215,實驗五:實驗五:n1. 練習思考(思考問題練習思考(思考問題1,2)n2.實訓作業(yè)(實訓作業(yè)(1)4.3 抽象類n抽象類:類定義時,類的修飾符有抽象類:類定義時,類的修飾符有abstract修飾符,抽象類是所有子類的修飾符,抽象類是所有子類的公共域和公共方法的集合公共域和公共方法的集合。n抽象方法:抽象方法:n只能出現(xiàn)在抽象類(或接口)中只能出現(xiàn)在抽象類(或接口)中n抽象方法由抽象方法由abstract修飾符來修飾,是僅有修飾符來修飾,是僅有方法頭沒有方法體的方法方法頭沒有方法體的方法n對抽象方法的具體

16、實現(xiàn)在抽象類的子類中(或?qū)Τ橄蠓椒ǖ木唧w實現(xiàn)在抽象類的子類中(或?qū)崿F(xiàn)接口的類中)完成。實現(xiàn)接口的類中)完成。4.3 抽象類Note:n抽象類是指抽象類是指不能不能直接被實例化的類(在程序中不能用抽象直接被實例化的類(在程序中不能用抽象類作為模板來創(chuàng)建對象)類作為模板來創(chuàng)建對象),因此一般作為其它類的超類因此一般作為其它類的超類,與與final類正好相反類正好相反n抽象類中的抽象方法抽象類中的抽象方法(是僅有方法頭沒有方法體的方法是僅有方法頭沒有方法體的方法,如如下所示下所示),由繼承類提供細節(jié)由繼承類提供細節(jié)舉例參見舉例參見javacode抽象類抽象類&抽象方法抽象方法SumArea2

17、.javan抽象類中不一定有抽象方法,但定義抽象方法的類必須是抽象類中不一定有抽象方法,但定義抽象方法的類必須是抽象類抽象類.n一個抽象類的子類如果不是抽象類,則它必須為父類中的所有抽一個抽象類的子類如果不是抽象類,則它必須為父類中的所有抽象方法書寫方法體,即實現(xiàn)對父類抽象方法的覆蓋,否則該子類象方法書寫方法體,即實現(xiàn)對父類抽象方法的覆蓋,否則該子類也是抽象類也是抽象類n舉例說明見下頁:舉例說明見下頁:4.3 抽象類改錯改錯1:public class MyMainpublic static void main(String args)IamAbstract ia=new IamAbstrac

18、t();abstract class IamAbstractIamAbstract()4.3 抽象類n改錯改錯2:class IamAbstract final int f;double d;abstract void method();4.3 抽象類class Fish extends Animalpublic void run() System.out.println(fish is swimming); void breathe()System.out.println(fish is bubbling);class LandAnimal extends Animalpublic void

19、 breathe();改錯改錯3:abstract class Runner public abstract void run();abstract class Animal extends Runnerpublic abstract void breathe();4.3.1 抽象類的作用n程序中定義抽象類的目的是為一類對象建程序中定義抽象類的目的是為一類對象建立抽象的模型,在同類對象所對應的類體立抽象的模型,在同類對象所對應的類體系中,抽象類往往在頂層。系中,抽象類往往在頂層。n定義抽象類和抽象方法可以向用戶和編譯定義抽象類和抽象方法可以向用戶和編譯器明確表明該類的作用和用法,使類體系器明確

20、表明該類的作用和用法,使類體系設計更加清晰設計更加清晰,因此是因此是java的一種很有用的一種很有用的面向?qū)ο髾C制。的面向?qū)ο髾C制。n舉例見下面幾頁舉例見下面幾頁4.3.1 抽象類的作用/已有兩個類已有兩個類Circle和和Rectangle,完成相關參數(shù)的計算完成相關參數(shù)的計算 class Circle public int r; Circle(int r) this.r=r; /this指指這個對象的這個對象的 public float area() return 3*r*r; /取近似取近似class Rectangle public int width,height; /這里不需這里不

21、需this Rectangle (int w, int h) width=w;height=h; public float area() return width*height; 4.3.1 抽象類的作用n假設有若干個假設有若干個Circle,以及若干個以及若干個Rectangle,希望計算希望計算它們的總面積它們的總面積,直截了當?shù)淖龇ㄊ菍⑺鼈兎謩e放到兩個數(shù)直截了當?shù)淖龇ㄊ菍⑺鼈兎謩e放到兩個數(shù)組中組中,用兩個循環(huán)用兩個循環(huán),加上一個加法加上一個加法,這種做法是不漂亮的這種做法是不漂亮的n例子程序見例子程序見javacode抽象類抽象類&抽象方法抽象方法SumArea1.javan如果

22、還有其它形狀如果還有其它形狀,triangle,ellipses等等,上述方法顯得上述方法顯得“累贅累贅”,我們希望有一種統(tǒng)一的表示我們希望有一種統(tǒng)一的表示,例如用一個數(shù)組例如用一個數(shù)組shape,接受所有的形狀接受所有的形狀,然后用然后用 for (i=0;ishape.length;i+) sum+=shapei.area(); 4.3.1 抽象類的作用abstract class Shape abstract float area();class Circle extends Shape public int r; Circle(int r) this.r=r; public float

23、 area() return 3*r*r; class Rectangle extends Shapepublic int width,height; Rectangle (int w, int h) width=w;height=h; public float area() return width*height; 例子程序見例子程序見javacode抽象類抽象類&抽象方法抽象方法SumArea2.java)抽象類和接口(小結)n接口中的所有方法都是抽象的,而抽象類可以定義帶有接口中的所有方法都是抽象的,而抽象類可以定義帶有方法體的方法體的非抽象方法非抽象方法。n一個類可以實現(xiàn)多個接

24、口,但只能繼承一個抽象父類。一個類可以實現(xiàn)多個接口,但只能繼承一個抽象父類。n接口與實現(xiàn)它的類不構成類的繼承體系,即接口不是類接口與實現(xiàn)它的類不構成類的繼承體系,即接口不是類體系的一部分。因此,不相關的類也可以實現(xiàn)相同的接體系的一部分。因此,不相關的類也可以實現(xiàn)相同的接口。口。n抽象類是屬于一個類的繼承體系,并且一般位于類體系抽象類是屬于一個類的繼承體系,并且一般位于類體系的頂層。的頂層。n上機練習:上機練習:np216,n實驗五,實驗五,2.練習思考(思考問題練習思考(思考問題3)抽象類和接口(小結)n使用接口的優(yōu)勢使用接口的優(yōu)勢n類通過實現(xiàn)多個接口可實現(xiàn)多重繼承,能類通過實現(xiàn)多個接口可實現(xiàn)

25、多重繼承,能夠使子類對象上溯造型為多個基礎類(接夠使子類對象上溯造型為多個基礎類(接口)類型。口)類型。n接口能抽象出不相關類之間的相似性,而接口能抽象出不相關類之間的相似性,而沒有強行形成類的繼承關系。沒有強行形成類的繼承關系。n使用接口,可以同時獲得抽象類以及接口使用接口,可以同時獲得抽象類以及接口的優(yōu)勢。的優(yōu)勢。4.4 Java類庫類庫n4.4.1 Java類庫結構類庫結構njava.lang包包 nJava語言核心包,包括語言核心包,包括Java語言基礎類,如基本數(shù)據(jù)語言基礎類,如基本數(shù)據(jù)類型、基本數(shù)值函數(shù)、字符串處理、異常處理等。類型、基本數(shù)值函數(shù)、字符串處理、異常處理等。n其中的類其中的類Object是最重要是是最重要是JAVA中所有類的基礎類,中所有類的基礎類,java.lang包不需要用包不需要用import語句引入,也就是說,每語句引入,也就是說,每個程序運行時,系統(tǒng)都會自動引入個程序運行時,系統(tǒng)都會自動引入Java.lang包。包。nlang包中的包中的Math類注意

溫馨提示

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

評論

0/150

提交評論