第04章接口、內(nèi)部類與Java API基礎(chǔ)(信息學(xué)院_第1頁
第04章接口、內(nèi)部類與Java API基礎(chǔ)(信息學(xué)院_第2頁
第04章接口、內(nèi)部類與Java API基礎(chǔ)(信息學(xué)院_第3頁
第04章接口、內(nèi)部類與Java API基礎(chǔ)(信息學(xué)院_第4頁
第04章接口、內(nèi)部類與Java API基礎(chǔ)(信息學(xué)院_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第4章章 接口、內(nèi)部類和接口、內(nèi)部類和Java API基礎(chǔ)基礎(chǔ)4.1 接口接口4.2 內(nèi)部類和內(nèi)部接口內(nèi)部類和內(nèi)部接口 4.3 java.lang包中的基礎(chǔ)類庫包中的基礎(chǔ)類庫4.4 java.util包中的工具類庫包中的工具類庫武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)1武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.1 接口接口4.1.1 接口與實現(xiàn)接口的類接口與實現(xiàn)接口的類4.1.2 用接口實現(xiàn)多重繼承用接口實現(xiàn)多重繼承2接口接口( interface)是一組是一組常量和抽象方法常量和抽象方法的的集合。在集合。在Java中,接口是一種中,接口是一種引用數(shù)據(jù)類引用數(shù)據(jù)

2、類型型。 與抽象類相似,接口與抽象類相似,接口也用于描述抽象也用于描述抽象的概念,約定的概念,約定多個類共同使用的常量和抽象多個類共同使用的常量和抽象方法。方法。 抽象方法的抽象方法的具體實現(xiàn)由實現(xiàn)接口的類具體實現(xiàn)由實現(xiàn)接口的類完成,完成,實現(xiàn)接口的類實現(xiàn)接口的類必須覆蓋接口必須覆蓋接口中的中的所有抽象方所有抽象方法法。 武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)3接口的作用接口的作用 接口提供方法聲明與方法實現(xiàn)相接口提供方法聲明與方法實現(xiàn)相分離的機制分離的機制,使多個類之間表現(xiàn)出使多個類之間表現(xiàn)出共同的行為能力共同的行為能力。接口中接口中的一的一 個抽象方法在實現(xiàn)接口的多個類中表

3、現(xiàn)出個抽象方法在實現(xiàn)接口的多個類中表現(xiàn)出多態(tài)性多態(tài)性。 武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4接口與抽象類的區(qū)別接口與抽象類的區(qū)別相同點:相同點:兩者都包含兩者都包含抽象方法抽象方法。兩者都兩者都不能被實例化不能被實例化。兩者都是兩者都是引用數(shù)據(jù)類型引用數(shù)據(jù)類型。 武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)5不同點:不同點:抽象類約定抽象類約定多個子類之間共同使用的方法多個子類之間共同使用的方法;接口約;接口約定定多個互不相關(guān)類之間共同使用多個互不相關(guān)類之間共同使用的方法。的方法。抽象類與子類之間采用單重繼承機制;抽象類與子類之間采用單重繼承機制;一個一個類實現(xiàn)類

4、實現(xiàn)多個接口則實現(xiàn)了多重繼承的功能多個接口則實現(xiàn)了多重繼承的功能。抽象類及其類中成員具有與抽象類及其類中成員具有與普通類一樣的訪問權(quán)限普通類一樣的訪問權(quán)限;接口的訪問權(quán)限有接口的訪問權(quán)限有public和默認兩種,接口中成員和默認兩種,接口中成員的訪問權(quán)限均是的訪問權(quán)限均是public。抽象類中可以包含非抽象方法抽象類中可以包含非抽象方法,也可以聲明構(gòu)造方也可以聲明構(gòu)造方法法;接口中的方法全部是抽象方法,不能聲明構(gòu)造接口中的方法全部是抽象方法,不能聲明構(gòu)造方法。方法。抽象類中可以聲明成員變量抽象類中可以聲明成員變量,子類可以對該成員變,子類可以對該成員變量賦值;量賦值;接口接口中只能聲明中只能聲

5、明常量常量。武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)6武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.1.1 接口與實現(xiàn)接口的類接口與實現(xiàn)接口的類聲明接口聲明接口public interface 接口接口 extends 父接口列表父接口列表 public static final 數(shù)據(jù)類型數(shù)據(jù)類型 成員變量成員變量=常量值常量值; public abstract 返回值類型返回值類型 成員方法成員方法(參數(shù)列表參數(shù)列表);public interface Area /可計算面積接口可計算面積接口 public abstract double area(); /計算面積

6、計算面積 接口不能被實例化接口不能被實例化72. 聲明實現(xiàn)接口的類聲明實現(xiàn)接口的類修飾符修飾符 class 類類 extends 父類父類 implements 接口列表接口列表例如,例如,public class Rectangle implements Areapublic class Ellipse implements Area實現(xiàn)接口的非抽象類必須實現(xiàn)所有接口中的所實現(xiàn)接口的非抽象類必須實現(xiàn)所有接口中的所有抽象方法,否則聲明為抽象類有抽象方法,否則聲明為抽象類武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)8接口聲明以關(guān)鍵字接口聲明以關(guān)鍵字interface開始,開始, 它只包

7、它只包含常數(shù)和抽象方法。含常數(shù)和抽象方法。與類不同的是,所有的接口成員都必須為與類不同的是,所有的接口成員都必須為public,并且接口不能說明,并且接口不能說明 任何實現(xiàn)細節(jié),任何實現(xiàn)細節(jié),接口中聲明的所有方法都隱含為接口中聲明的所有方法都隱含為public abstract方法,而所有的變量都隱含為方法,而所有的變量都隱含為public static final。武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)9武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)具體類必須實現(xiàn)具體類必須實現(xiàn)( implements)接口,并且必須用接接口,并且必須用接口聲明中的標(biāo)簽名來口聲明中的標(biāo)

8、簽名來 聲明接口中定義的所有方法。聲明接口中定義的所有方法。如果一個類沒有實現(xiàn)接口的所有方法,那么它是個如果一個類沒有實現(xiàn)接口的所有方法,那么它是個抽象類,必須聲明抽象類,必須聲明 為為abstract類型。類型。如果一個具體類如果一個具體類implements某個接口。卻沒有實現(xiàn)某個接口。卻沒有實現(xiàn)該接口的所有方法,在編譯時將會產(chǎn)生語法錯誤,該接口的所有方法,在編譯時將會產(chǎn)生語法錯誤,提示該類必須聲明為提示該類必須聲明為abstract。 10【例例4.1】可計算面積接口與實現(xiàn)該可計算面積接口與實現(xiàn)該接口的矩形類。接口的矩形類。 武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)11武漢

9、理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)3. 接口是引用數(shù)據(jù)類型接口是引用數(shù)據(jù)類型 Area g = new Rectangle(10,20); /接口變量接口變量g引用實現(xiàn)接口的類的對象引用實現(xiàn)接口的類的對象g.toString() /執(zhí)行執(zhí)行Rectangle的方法的方法g = new Ellipse(10,20); /g引用橢圓對象引用橢圓對象g.toString() /執(zhí)行執(zhí)行Ellipse的方法的方法12武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)【例例4.2】可計算面積接口與實現(xiàn)可計算面積接口與實現(xiàn)該接口的矩形類。該接口的矩形類。13一個類可以繼承一個父類并實現(xiàn)

10、多個接口一個類可以繼承一個父類并實現(xiàn)多個接口父 類繼 承子 類 2子 類 1繼 承(1) 單 重 繼 承(2) 多 重 繼 承父 類繼 承子 類接 口 1實 現(xiàn)接 口 1實 現(xiàn)類接 口 2實 現(xiàn)(a) 繼 承 并 實 現(xiàn) 接 口(b) 實 現(xiàn) 多 個 接 口接 口 2實 現(xiàn)武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)14武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)【例例4.3】 球類實現(xiàn)多個接口。球類實現(xiàn)多個接口。15武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.1.2 Java用接口實現(xiàn)多重繼承用接口實現(xiàn)多重繼承接口的多繼承接口的多繼承接口與抽象類的區(qū)別接口與

11、抽象類的區(qū)別16武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)3. 單繼承和多繼承單繼承和多繼承 17武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)圖圖4.6 多繼承的多繼承的“鉆石繼承鉆石繼承”類型會類型會導(dǎo)致二義性導(dǎo)致二義性 18武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.2 內(nèi)部類和內(nèi)部接口內(nèi)部類和內(nèi)部接口 public class Line /直線類,外層類型直線類,外層類型 class Point /點類,內(nèi)嵌類型點類,內(nèi)嵌類型19武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)作為類型的特性作為類型的特性內(nèi)嵌類型不能與外層類型同名。內(nèi)嵌類型不能與

12、外層類型同名。內(nèi)部類中可以聲明成員變量和成員方法。內(nèi)部類中可以聲明成員變量和成員方法。內(nèi)部類可以繼承父類或?qū)崿F(xiàn)接口。內(nèi)部類可以繼承父類或?qū)崿F(xiàn)接口。內(nèi)部類可以聲明為抽象類或內(nèi)部接口。內(nèi)部類可以聲明為抽象類或內(nèi)部接口。20武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)2. 作為成員的特性作為成員的特性使用點運算符使用點運算符“.”引用內(nèi)嵌類型:引用內(nèi)嵌類型:外層類型外層類型.內(nèi)嵌類型內(nèi)嵌類型Line.Point彼此信任,能訪問對方的所有成員。彼此信任,能訪問對方的所有成員。具有類中成員的具有類中成員的4種訪問控制權(quán)限。種訪問控制權(quán)限。內(nèi)部接口總是靜態(tài)的。內(nèi)部接口總是靜態(tài)的。21武漢理工大學(xué)

13、信息學(xué)院Java程序設(shè)計實用教程(第3版)【例例4.4】 直線類聲明內(nèi)嵌的點類和直線類聲明內(nèi)嵌的點類和方向接口。方向接口。 22武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.3 java.lang包中的基礎(chǔ)類庫包中的基礎(chǔ)類庫4.3.1 Object類類4.3.2 Math數(shù)學(xué)類數(shù)學(xué)類4.3.3 Comparable可比較接口可比較接口4.3.4 基本數(shù)據(jù)類型的包裝類基本數(shù)據(jù)類型的包裝類4.3.5 String字符串類字符串類4.3.6 Class類操作類類操作類4.3.7 System系統(tǒng)類和系統(tǒng)類和Runtime運行時運行時類類23武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第

14、3版)4.3.1 Object類類package java.lang;public class Object public Object() /構(gòu)造方法構(gòu)造方法 public final native Class getClass(); /返回當(dāng)前對象所在的類返回當(dāng)前對象所在的類 public boolean equals(Object obj) /比較當(dāng)前對象與比較當(dāng)前對象與obj是否相等是否相等 public String toString() /返回當(dāng)前對象的信息字符串返回當(dāng)前對象的信息字符串 protected void finalize() throws Throwable /析構(gòu)方

15、法析構(gòu)方法24武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.3.2 Math數(shù)學(xué)類數(shù)學(xué)類public final class Math extends Object public static final double E = 2.7182818284590452354; /常量常量 public static final double PI = 3.14159265358979323846; public static double abs(double a) /求絕對值求絕對值 public static double max(double a,double b) /最大值最大

16、值 public static double min(double a,double b) /最小值最小值 public static double random() /返回一個返回一個0.01.0之間的隨機數(shù)之間的隨機數(shù)25武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.3.3 Comparable可比較接口可比較接口public interface Comparable int compareTo(T o) /比較對象比較對象 其中,其中,是是Comparable接口的參數(shù),表接口的參數(shù),表示一個類。示一個類。 26武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.3.4

17、 基本數(shù)據(jù)類型的包裝類基本數(shù)據(jù)類型的包裝類8個個Byte、Short、Integer、Long、Float、Double、Character、Boolean。 public final class Integer extends Number implements Comparable public static final int MIN_VALUE = 0 x80000000;/最小值常量,最小值常量,-231 public static final int MAX_VALUE = 0 x7fffffff; /最大值常量,最大值常量,231-1 public Integer(int val

18、ue) /構(gòu)造方法構(gòu)造方法 public Integer(String s) throws NumberFormatException public static int parseInt(String s) throws NumberFormatException /將字符串轉(zhuǎn)換為整數(shù),靜態(tài)方法將字符串轉(zhuǎn)換為整數(shù),靜態(tài)方法 public boolean equals(Object obj) /覆蓋覆蓋Object類中方法類中方法 public String toString() /覆蓋覆蓋Object類中方法類中方法 public int compareTo(Integer anotherI

19、nteger) /比較兩個對象的大小,返回兩者之間的差值,實現(xiàn)比較兩個對象的大小,返回兩者之間的差值,實現(xiàn)Comparable接口中方法接口中方法27武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.3.5 String字符串類字符串類public final class String extends Object implements java.io.Serializable, Comparable, CharSequence public String() /構(gòu)造方法構(gòu)造方法 public String(String original) public String toString

20、() /覆蓋覆蓋Object類中方法類中方法 public int length() /返回字符串的長度返回字符串的長度 public boolean equals(Object obj) /比較字符串是否相等比較字符串是否相等 public boolean equalsIgnoreCase (String s)/忽略字母大小寫忽略字母大小寫 public int compareTo(String anotherString) /比較字符串的大小,實現(xiàn)比較字符串的大小,實現(xiàn)Comparable接口方法接口方法 public int compareToIgnoreCase(String str)

21、 /比較字符串的大小,忽略字母大小寫比較字符串的大小,忽略字母大小寫28武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.3.6 Class類操作類類操作類public final class Class public String getName() /返回當(dāng)前類名字符串返回當(dāng)前類名字符串 public Class getSuperclass(); /返回當(dāng)前類的父類返回當(dāng)前類的父類 public Package getPackage() /返回當(dāng)前類所在的包返回當(dāng)前類所在的包System.out.print(this.getClass().getName()+ );this.get

22、Class().getSuperclass().getName()this.getClass().getPackage().getName() 29武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.3.7 System系統(tǒng)類和系統(tǒng)類和Runtime運運行時類行時類public final class System extends Object public final static InputStream in = nullInputStream(); public final static PrintStream out = nullPrintStream(); public fin

23、al static PrintStream err = nullPrintStream(); public static native viod arraycopy(Object src, int src_pos, Object dst, int dst_pos, int length) /復(fù)制數(shù)組復(fù)制數(shù)組 public static void exit(int status) /結(jié)束當(dāng)前運行的程序結(jié)束當(dāng)前運行的程序 public static native long currentTimeMillis(); /獲得當(dāng)前日期和時間,返回從獲得當(dāng)前日期和時間,返回從1970-1-1 00:00:

24、00開始至當(dāng)前時開始至當(dāng)前時間的累計毫秒數(shù)間的累計毫秒數(shù) public static Properties getProperties() /獲得系統(tǒng)全部屬性獲得系統(tǒng)全部屬性 public static String getProperty(String key) /獲得指定系統(tǒng)屬性獲得指定系統(tǒng)屬性30武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)Runtime運行時類運行時類public class Runtime extends Object public static Runtime getRuntime()/返回與當(dāng)前應(yīng)用程序相聯(lián)系的運行時環(huán)境返回與當(dāng)前應(yīng)用程序相聯(lián)系的運行時環(huán)

25、境 public long totalMemory() /返回系統(tǒng)內(nèi)存空間總量返回系統(tǒng)內(nèi)存空間總量 public long freeMemory() /返回系統(tǒng)內(nèi)存剩余空間的大小返回系統(tǒng)內(nèi)存剩余空間的大小31武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.4 java.util包中的工具類庫包中的工具類庫4.4.1 日期類日期類4.4.2 Arrays數(shù)組類數(shù)組類4.4.3 Random隨機數(shù)序列類隨機數(shù)序列類 32武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.4.1 日期類日期類Date日期類日期類public class Date extends Object imp

26、lements java.io.Serializable, Cloneable, Comparable public Date() /構(gòu)造方法,獲得系統(tǒng)當(dāng)前日期和時間的構(gòu)造方法,獲得系統(tǒng)當(dāng)前日期和時間的Date對象對象 this(System.currentTimeMillis(); public Date(long date) /構(gòu)造方法,以長整型值創(chuàng)建構(gòu)造方法,以長整型值創(chuàng)建Date對象對象 public void setTime(long time) /設(shè)置時間對應(yīng)的長整型值設(shè)置時間對應(yīng)的長整型值 public long getTime() /返回對象中的時間值返回對象中的時間值 pub

27、lic boolean before(Date when) /判斷是否在指定日期之前判斷是否在指定日期之前 public boolean after(Date when) /判斷是否在指定日期之后判斷是否在指定日期之后 public int compareTo(Date anotherDate) /比較兩個日期比較兩個日期33武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)2. Calendar類類public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable pub

28、lic static final int YEAR /年,常量年,常量 public static final int MONTH /月月 public static final int DATE /日日 public static final int HOUR /時時 public static final int MINUTE /分分 public static final int SECOND /秒秒 public static final int MILLISECOND /百分秒百分秒 public static final int DAY_OF_WEEK /星期星期34武漢理工大學(xué)信

29、息學(xué)院Java程序設(shè)計實用教程(第3版)Calendar類類public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable public static Calendar getInstance() /創(chuàng)建實例創(chuàng)建實例 public int get(int field) /返回日期返回日期 public final Date getTime() /返回對象中的日期和時間返回對象中的日期和時間 public final void setTime(Date date) /設(shè)置對象

30、的日期和時間設(shè)置對象的日期和時間 public final void set(int year, int month, int date) public final void set(int year, int month, int date, int hour, int minute)例如,例如,Calendar now = Calendar.getInstance(); /獲得實例獲得實例int year =now.get(Calendar.YEAR); /獲得對象中的年份值獲得對象中的年份值【例例4.5】 月歷。月歷。35武漢理工大學(xué)信息學(xué)院Java程序設(shè)計實用教程(第3版)4.4.2 Arrays數(shù)組類數(shù)組類比較兩個數(shù)組是否相等比較兩個數(shù)組是否相等public s

溫馨提示

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

評論

0/150

提交評論