第四章Java類和對(duì)象的高級(jí)特征_第1頁(yè)
第四章Java類和對(duì)象的高級(jí)特征_第2頁(yè)
第四章Java類和對(duì)象的高級(jí)特征_第3頁(yè)
第四章Java類和對(duì)象的高級(jí)特征_第4頁(yè)
第四章Java類和對(duì)象的高級(jí)特征_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四章 Java類和對(duì)象的高級(jí)特征【課前思考】什么是包?什么是接口? 什么是內(nèi)部類?【學(xué)習(xí)目標(biāo)】通過(guò)本章的學(xué)習(xí),使學(xué)生了解包、接口的概念,掌握J(rèn)ava語(yǔ)言程序包、接口的使用方法。除了學(xué)習(xí)如何使用系統(tǒng)程序包外,還要學(xué)習(xí)如何把自己編寫的類組成程序包的形式?!緦W(xué)習(xí)指南】應(yīng)深刻理解各知識(shí)點(diǎn)的概念,使用上一章的編程基礎(chǔ)知識(shí)及面向?qū)ο蠹夹g(shù),編寫簡(jiǎn)單的java類,由淺至深,養(yǎng)成風(fēng)格良好的編程習(xí)慣。【難 重 點(diǎn)】接口的使用?!局?識(shí) 點(diǎn)】l 接口l 內(nèi)部類l 包【內(nèi) 容】第一節(jié) 接口接口是抽象類的一種,只包含常量和方法的定義,而沒有變量和方法的實(shí)現(xiàn),且其方法都是抽象方法。Ø 定義接口接口是沒有實(shí)現(xiàn)的

2、方法和變量的集合。接口的定義與類的定義相似,格式為:修飾符interface接口名 方法1; 方法2;定義在接口中的變量全部隱含為final和static。這意味著它們不能被實(shí)現(xiàn)接口方法的類改變,這些變量還必須設(shè)置初值。如果接口聲明為public,則接口中的方法和變量全部為public。例 4.1 聲明接口。本例聲明了接口Stuednt_info表示學(xué)生情況,其中有一個(gè)成員變量year和兩個(gè)成員方法age和output。成員變量year隱含為final和static型,必須設(shè)置初值。源程序文件名必須與接口名相同。程序如下: iInterface Student_info /學(xué)生情況接口 int

3、 year=2002; int age(); void output();Ø 實(shí)現(xiàn)接口接口的實(shí)現(xiàn)類似于繼承,只是不用extends,而是用關(guān)鍵字implements聲明一個(gè)類將實(shí)現(xiàn)一個(gè)接口,其聲明格式如下:修飾符class類名extends超類名implements接口名1,接口名2,其中,修飾符可以是public,也可以省略。如果一個(gè)類實(shí)現(xiàn)一個(gè)接口,則必須實(shí)現(xiàn)接口中的所有方法,且方法必須聲明為public。如果一個(gè)類實(shí)現(xiàn)多個(gè)接口,則用逗號(hào)分隔接口列表。例 4.2 實(shí)現(xiàn)接口的類。本例聲明的類Stuq實(shí)現(xiàn)接口Student_info,Stu1類中有自己的兩個(gè)成員變量name和birth

4、_year,實(shí)現(xiàn)接口方法age時(shí)使用了接口中的變量year的值。程序如下:public class Stu1 implements Student_info /實(shí)現(xiàn)學(xué)生情況接口 String name; int birth_year; /類自己的成員變量 public Stu1(String n1,int y) name = n1; birth_year = y; public int age() /實(shí)現(xiàn)接口的方法 return year - birth_year; public void output() /實(shí)現(xiàn)接口的方法 System.out.println( +&quo

5、t; "+ this.age()+"歲"); public static void main (String args) Stu1 s1 = new Stu1("李明",1980); s1.output(); 程序運(yùn)行結(jié)果:李明 22歲由本例可見,一個(gè)類實(shí)現(xiàn)一個(gè)接口,必須給出接口中所有方法的實(shí)現(xiàn)。如果不能實(shí)現(xiàn)某方法,也必須寫出一個(gè)空方法。第二節(jié) 內(nèi)部類內(nèi)部類是在一個(gè)類的內(nèi)部嵌套定義的類,它可以是其它類的成員,也可以在一個(gè)語(yǔ)句塊的內(nèi)部定義,還可以在表達(dá)式內(nèi)部匿名定義。內(nèi)部類有如下特性:² 一般用在定義它的類或語(yǔ)句塊之內(nèi),在外部引用它時(shí)必

6、須給出完整的名稱.名字不能與包含它的類名相同。² 可以使用包含它的類的靜態(tài)和實(shí)例成員變量,也可以使用它所在方法的局部變量。² 可以定義為abstract。² 可以聲明為private或protected。² 若被聲明為static,就變成了頂層類,不能再使用局部變量。² 若想在Inner Class中聲明任何static成員,則該Inner Class必須聲明為static。內(nèi)部類的優(yōu)缺點(diǎn):² 優(yōu)點(diǎn):節(jié)省編譯后產(chǎn)生的字節(jié)碼文件的大小² 缺點(diǎn):使程序結(jié)構(gòu)不清楚第三節(jié) 包包(package)是Java提供的一種區(qū)別類名空間的機(jī)制

7、,是類的組織方式,包對(duì)應(yīng)一個(gè)文件夾,包中還可以再有包,稱為包等級(jí)。Java的常用包有:Java.lang 語(yǔ)言包Java.util 使用包Java.awt 抽象窗口工具包Java.text 文本包Java.io 輸入輸出流的文件包Java.applet Applet應(yīng)用程序J 網(wǎng)絡(luò)功能Ø 語(yǔ)言包 語(yǔ)言包java.lang提供Java語(yǔ)言最基礎(chǔ)的類。1) Object類是Java類層次的根,所以其他類都是由Object類派生出來(lái)的,在Object類中定義的方法,在其他類中都可以使用。2) 數(shù)據(jù)類型包裝類(The Data Type Wrapper)對(duì)應(yīng)Java的8個(gè)基本數(shù)據(jù)類型數(shù)據(jù)類型

8、包裝類也有8個(gè):Byte,Short,Integer,Long,Float,Double,Character和Boolean。3) 字符串類:Java將字符串作為類來(lái)實(shí)現(xiàn),而不強(qiáng)制使用字符數(shù)組。字符串有兩個(gè)類:String和StringBuffer。4) 數(shù)字型Math提供一組帶常量和數(shù)學(xué)函數(shù),包括:E和PI常數(shù),求絕對(duì)值的abs方法,計(jì)算三角函數(shù)的sin方法和cos方法,求最小值、最大值min方法和max方法,求隨機(jī)數(shù)的random方法等。5) 系統(tǒng)和運(yùn)行時(shí)類System、Runtime提供訪問(wèn)系統(tǒng)和運(yùn)行時(shí)環(huán)境資源。6) 類操作類Class為類提供運(yùn)行時(shí)信息,如名字、類型以及父類。7) 錯(cuò)誤

9、和異常處理類Throwable,Exception和Error8) 線程類Thread9) 過(guò)程類Process例 4.10 獲得運(yùn)行時(shí)信息。本例演示使用Integer類的靜態(tài)方法將十進(jìn)制字符串轉(zhuǎn)化為二進(jìn)制、八進(jìn)制、十六Ø 實(shí)用包l 日期類包括Data、Calendar、GregorianCalandar類,它們描述日期和時(shí)間,提供對(duì)日期值的許多操作方法,如獲得當(dāng)前日期,比較兩個(gè)日期,判斷日期的先后等l 集合類包括多種集合接口Collection(無(wú)序集合)、Set(不重復(fù)集合)、List(有序不重復(fù)集合)、Enumeration(枚舉)等,以及表示數(shù)據(jù)結(jié)構(gòu)的多個(gè)類:LinkedLi

10、st(鏈表)、Vector(向量)、Stack(棧)、Hashtable(散列表)、TreeSet(樹)等。Ø 文本包Java文本包java.text中的Format、DateFormat、SimpleDateFormat等類提供各種文本或日期格式。Ø 引用Java定義的包如果要使用Java包中的類,必須在源程序用import語(yǔ)句導(dǎo)入。import語(yǔ)句的格式 為:import<包名1>.<包名2>.<包名3>···<類名>|*;起中import為關(guān)鍵字,多個(gè)包名及類名之間用圓點(diǎn)分隔,“*”表示包中

11、的所有類。Ø 自定義包如果在源文件中沒有聲明包,那么類名將放在默認(rèn)包中,這個(gè)包沒有名字。默認(rèn)包對(duì)于小的程序很適用,但但程序很復(fù)雜是,默認(rèn)包就顯的不夠用了。除了可以引用Java定義的包之外,程序員還可以定義自己的包。1)包的定義格式:包的定義格式如下:Package <包名>其中,package是關(guān)鍵字,<包名>是標(biāo)示符。例如:Package Mypackage;Public class Date; 2)設(shè)置包的路徑: 對(duì)于程序員自定義的包Mypackage,系統(tǒng)如何知道這個(gè)包在哪里?其他類如何引用他? 我們?cè)贒:myjava之中創(chuàng)建一個(gè)與包同名的文件夾D:my

12、javaMypackage,并將編譯過(guò)的文件(Date1.class)放入該文件夾中。注意:該包名與文件名的大小應(yīng)該一致。 在添加環(huán)境變量classpath的路徑如下:set classpath=.;C:jdk1.3.0_02lib;D:myjava 其他類用 import Mypackage.*; 語(yǔ)句可以引用Mypackage包中的類。程序運(yùn)行時(shí),系統(tǒng)將在D:myjava中尋找Mypackage包。例 4.12 自定義包。本例聲明一個(gè)完整的日期類NewDate。將編譯后的日期類文件NewDate.class放在已建立的包Mypackage中。NewDate類程序如下:package Myp

13、ackage;import java.util.*; /引用java.util包public class NewDate private int year,month,day; public NewDate(int y,int m,int d) year = y; month = (m>=1) & (m<=12) ? m : 1); day = (d>=1) & (d<=31) ? d : 1); public NewDate() this(0,0,0); public static int thisyear() /獲得當(dāng)年的年份 return Cale

14、ndar.getInstance().get(Calendar.YEAR); public int year() /獲得年份 return year; public String toString() /轉(zhuǎn)化為字符串 return year+"-"+month+"-"+day; 在另一程序People.java中,引用Mypackage包中的NewDate類。程序如下:import Mypackage.NewDate; /引用Mypackage包中的NewDate類public class People private String name; priv

15、ate NewDate birth; public static void main(String args) People a = new People("Wangli",1981,2,14); a.output(); public People(String n1,NewDate d1) name = n1; birth = d1; public People(String n1,int y,int m,int d) this(n1,new NewDate(y,m,d); public People() this("",new NewDate(); public int age() /計(jì)算年齡 return NewDate.thi

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論