第4講類對(duì)象和接口-課件_第1頁(yè)
第4講類對(duì)象和接口-課件_第2頁(yè)
第4講類對(duì)象和接口-課件_第3頁(yè)
第4講類對(duì)象和接口-課件_第4頁(yè)
第4講類對(duì)象和接口-課件_第5頁(yè)
已閱讀5頁(yè),還剩133頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章類、對(duì)象和接口

4.1編程語(yǔ)言的幾個(gè)發(fā)展階段4.2類4.3對(duì)象4.4static關(guān)鍵字4.5this關(guān)鍵字4.6包4.7訪問權(quán)限4.8類的繼承4.9對(duì)象的上轉(zhuǎn)型對(duì)象4.10多態(tài)性4.11abstract類和abstract方法4.12super關(guān)鍵字4.13接口4.14內(nèi)部類4.15匿名類4.16異常類4.18基本類型的類包裝2020/10/2814.1編程語(yǔ)言的幾個(gè)發(fā)展階段

機(jī)器語(yǔ)言(如匯編語(yǔ)言)

計(jì)算機(jī)處理信息的早期語(yǔ)言是所謂的機(jī)器語(yǔ)言指令都是由0,1組成的序列,稱這樣的序列為一條機(jī)器指令。過程語(yǔ)言

語(yǔ)言把代碼組成叫做過程或函數(shù)的塊。每個(gè)塊的目標(biāo)是完成某個(gè)任務(wù)例如,一個(gè)C的源程序就是由若干個(gè)書寫形式互相獨(dú)立的函數(shù)組成。面向?qū)ο缶幊堂嫦驅(qū)ο缶幊讨饕w現(xiàn)下列三個(gè)特性:1.封裝性2.繼承3.多態(tài)4、重載Java語(yǔ)言是面向?qū)ο笳Z(yǔ)言,它的源程序是由若干個(gè)類組成,源文件是擴(kuò)展名為.java的文本文件

2020/10/282精品資料34.2類

類是組成Java程序的基本要素。類封裝了一類對(duì)象的狀態(tài)和方法。封裝的成員變量用來表示對(duì)象的狀態(tài);而成員函數(shù)表示對(duì)象的方法。類的實(shí)現(xiàn)包括兩部分:類聲明和類體。class梯形

{float上底,下底,高,laderArea;//變量定義float計(jì)算面積()//方法定義{inta;laderArea=(上底+下底)*高/2.0f;returnladerArea;}}2020/10/2841.類聲明

classPeople{…}“classPeople”叫做類聲明;“People”是類名。習(xí)慣上類名的第一個(gè)字母大寫,但這不是必須的。2020/10/2852.類體

類聲明之后的一對(duì)大括號(hào)“{”,“}”以及它們之間的內(nèi)容稱做類體。類體的內(nèi)容由兩部分構(gòu)成:變量的定義,用來刻畫屬性;另一部分是方法的定義,用來刻畫功能。class梯形

{float上底,下底,高,laderArea;//變量定義float計(jì)算面積()//方法定義{inta;laderArea=(上底+下底)*高/2.0f;returnladerArea;}}2020/10/286class梯形

{float上底,下底,高,laderArea;//變量定義部分inta;float計(jì)算面積()//方法定義{inta;laderArea=(上底+下底)*高/2.0f;returnladerArea;}void修改高(floath)//方法定義{高=h;}}2020/10/2873.成員變量和局部變量

類的成員變量。局部變量:在方法體中定義的變量和方法的參數(shù)。作用域?qū)Ρ龋撼蓡T變量在整個(gè)類內(nèi)都有效,局部變量只在定義它的方法內(nèi)有效。成員變量又分為:實(shí)例成員變量(簡(jiǎn)稱實(shí)例變量)和

類變量(也稱靜態(tài)變量).成員變量的類型前面加上關(guān)鍵字static—對(duì)所有的此類實(shí)例化的對(duì)象共享同一內(nèi)存如果局部變量的名字與成員變量的名字相同,則成員變量被隱藏,即這個(gè)成員變量在這個(gè)方法內(nèi)暫時(shí)失效.這時(shí)如果想在該方法內(nèi)使用成員變量,必須使用關(guān)鍵字this。2020/10/288class三角形{floatsideA,sideB,sideC,lengthSum;voidsetSide(floatsideA,floatsideB,floatsideC){this.sideA=sideA;

this.sideB=sideB;

this.sideC=sideC;}}this.sideA,this.sideB,this.sideC就分別表示成員變量sideA,sideB,sideC

2020/10/2894.方法

方法的定義包括兩部分:方法聲明和方法體。方法參數(shù)在整個(gè)方法內(nèi)有效;方法內(nèi)定義的局部變量從它定義的位置之后開始有效。---如果局部變量的定義是在一個(gè)復(fù)合語(yǔ)句中,那么該局部變量的有效范圍是該復(fù)合語(yǔ)句,即僅在該復(fù)合語(yǔ)句中有效,如果局部變量的定義是在一個(gè)循環(huán)語(yǔ)句中,那么該局部變量的有效范圍是該循環(huán)語(yǔ)句,即僅在該循環(huán)語(yǔ)句中有效.和C語(yǔ)言中寫一個(gè)函數(shù)類似2020/10/2810classArea

{floatgetArea(floatr){return3.14f*r*r;}doublegetArea(floatx,inty){returnx*y;}floatgetArea(intx,floaty){returnx*y;}doublegetArea(floatx,floaty,floatz){return(x*x+y*y+z*z)*2.0;}}2020/10/2811方法:類方法和實(shí)例方法

類中的方法分為:實(shí)例方法和類方法.實(shí)例方法:方法聲明時(shí),方法類型前面不加關(guān)鍵字static加關(guān)鍵字static的是類方法。構(gòu)造方法不能用static修飾構(gòu)造方法。2020/10/2812類方法和實(shí)例方法

加上static直接用類名來調(diào)用,所以成為類方法;而沒有static關(guān)鍵字的方法必須用對(duì)象實(shí)例來調(diào)用,成為實(shí)例方法。2020/10/2813構(gòu)造方法

構(gòu)造方法是一種特殊方法,它的名字必須與它所在的類的名字完全相同,而且沒有類型,構(gòu)造方法也可以重載。2020/10/2814class梯形{float上底,下底,高;梯形(){上底=60;下底=100;高=20;}梯形(floatx,inty,floath){上底=x;下底=y;高=h;}}2020/10/2815缺省的構(gòu)造方法當(dāng)沒有構(gòu)造函數(shù)時(shí),系統(tǒng)提供缺省的構(gòu)造方法2020/10/2816如果調(diào)用缺省的構(gòu)造方法成員變量的初始化值為缺省值數(shù)值型是0Boolean型falseChar“\0”對(duì)象NULL2020/10/2817構(gòu)造方法允許有兩個(gè)不同的構(gòu)造方法,調(diào)用哪一個(gè),由主調(diào)函數(shù)的參數(shù)來決定。-----方法(函數(shù))重載2020/10/2818方法重載

方法重載的意思是:一個(gè)類中的方法具有相同的名字,但參數(shù)不同,即或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)的類型不同。2020/10/28194.3對(duì)象

類是創(chuàng)建對(duì)象的模板。當(dāng)使用一個(gè)類創(chuàng)建了一個(gè)對(duì)象時(shí),我們也說我們給出了這個(gè)類的一個(gè)實(shí)例。2020/10/28201.創(chuàng)建對(duì)象

創(chuàng)建一個(gè)對(duì)象包括對(duì)象的聲明和為對(duì)象分配內(nèi)存兩個(gè)步驟。

(1).對(duì)象的聲明。一般格式為:

類的名字對(duì)象名字;如:

PeoplezhangPing;2020/10/2821(2)為聲明的對(duì)象分配內(nèi)存使用new運(yùn)算符()為聲明的對(duì)象分配內(nèi)存,(2)調(diào)用構(gòu)造方法,沒有構(gòu)造方法,系統(tǒng)會(huì)調(diào)用默認(rèn)的構(gòu)造方法(默認(rèn)的構(gòu)造方法是無參數(shù)的。如:zhangPing=newPeople();2020/10/2822

(3)對(duì)象的內(nèi)存模型

使用例子1來說明對(duì)象的內(nèi)存模型classXiyoujiRenwu{floatheight,weight;Stringhead,ear,hand,foot,mouth;

intspeak(Strings){System.out.println(s);}}classA{publicstaticvoidmain(Stringargs[]){XiyoujiRenwuzhubajie;//聲明對(duì)象zhubajie=newXiyoujiRenwu();//為對(duì)象分配內(nèi)存,//默認(rèn)的構(gòu)造方法}}2020/10/2823

聲明對(duì)象時(shí)的內(nèi)存模型

當(dāng)用XiyoujiRenwu類聲明一個(gè)變量,即對(duì)象zhubajie時(shí),如例子1中的對(duì)象zhubajie:

XiyoujiRenwuzhubajie;內(nèi)存模型如左圖所示

2020/10/2824對(duì)象分配內(nèi)存后的內(nèi)存模型

當(dāng)系統(tǒng)見到:zhubajie=newXiyoujiRenwu();

時(shí),就會(huì)做三件事:①為height,weight,head,ear,mouth,hand,foot各個(gè)變量分配內(nèi)存,即XiyoujiRenwu類的成員變量被分配內(nèi)存空間②執(zhí)行構(gòu)造方法中的語(yǔ)句。③new運(yùn)算符在為變量height,weight,head,ear,mouth,hand,foot分配內(nèi)存后,將返回一個(gè)引用給對(duì)象變量zhubajie。

2020/10/2825new關(guān)鍵字的作用為對(duì)象分配內(nèi)存空間;調(diào)用構(gòu)造函數(shù);為對(duì)象返回一個(gè)引用2020/10/28262.使用對(duì)象

對(duì)象:可以操作自己的變量;使用創(chuàng)建它的那個(gè)類中的方法的能力。通過使用運(yùn)算符“.”,對(duì)象可以實(shí)現(xiàn)對(duì)自己的變量訪問和方法的調(diào)用。當(dāng)對(duì)象調(diào)用方法時(shí),方法中出現(xiàn)的成員變量就是指該對(duì)象的成員變量。2020/10/2827class梯形{float上底,下底,高;梯形(){上底=60;下底=100;高=20;}梯形(floatx,inty,floath){上底=x;下底=y;高=h;}}梯形t;t=new梯形();t.上底;t.梯形(40f,50,60.5f);2020/10/28284.4static關(guān)鍵字

用static修飾的成員變量稱為類變量用static修飾的方法稱為類方法2020/10/28291.實(shí)例變量和類變量的區(qū)別

一個(gè)類通過使用new運(yùn)算符可以創(chuàng)建多個(gè)不同的對(duì)象;不同的對(duì)象的實(shí)例變量將被分配不同的內(nèi)存空間;如果類中的成員變量有類變量,那么所有的對(duì)象的這個(gè)類變量都分配給相同的一處內(nèi)存,改變其中一個(gè)對(duì)象的這個(gè)類變量會(huì)影響其它對(duì)象的這個(gè)類變量。類變量是和該類創(chuàng)建的所有對(duì)象相關(guān)聯(lián)的變量,改變其中一個(gè)對(duì)象的這個(gè)類變量就同時(shí)改變了其它對(duì)象的這個(gè)類變量。因此,類變量不僅可以通過某個(gè)對(duì)象訪問也可以直接通過類名訪問。

實(shí)例變量?jī)H僅是和相應(yīng)的對(duì)象關(guān)聯(lián)的變量,也就是說,不同對(duì)象的實(shí)例變量互不相同,即分配不同的內(nèi)存空間,改變其中一個(gè)對(duì)象的實(shí)例變量不會(huì)影響其它對(duì)象的這個(gè)實(shí)例變量。

實(shí)例變量可以通過對(duì)象訪問,不能使用類名訪問。2020/10/2830類方法只能操作類變量,而實(shí)例方法不受限制class梯形

{float上底,下底,laderArea;//變量定義部分floatb,高;float計(jì)算面積()//方法定義{inta;laderArea=(上底+下底)*高/2.0f;returnladerArea;}staticvoid設(shè)定高(floath)//方法定義{高=h;}}2020/10/2831注意靜態(tài)的成員變量,可以被非靜態(tài)的方法調(diào)用,反之則不行。為什么main是定義成靜態(tài)的?2020/10/28322.實(shí)例方法和類方法的區(qū)別

實(shí)例方法可以被類創(chuàng)建的任何對(duì)象調(diào)用執(zhí)行。類方法不僅可以被類創(chuàng)建的任何對(duì)象調(diào)用執(zhí)行,也可以直接通過類名調(diào)用2020/10/28334.5this關(guān)鍵字

this是Java的一個(gè)關(guān)鍵字,表示某個(gè)對(duì)象。this可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。this關(guān)鍵字出現(xiàn)在類的構(gòu)造方法中時(shí),代表使用該構(gòu)造方法所創(chuàng)建的對(duì)象。this關(guān)鍵字出現(xiàn)在類的實(shí)例方法中時(shí),代表正在調(diào)用該方法的當(dāng)前對(duì)象。2020/10/2834class三角形{floatsideA,sideB,sideC,lengthSum;voidsetSide(floatsideA,floatsideB,floatsideC){this.sideA=sideA;

this.sideB=sideB;

this.sideC=sideC;}}this.sideA,this.sideB,this.sideC就分別表示成員變量sideA,sideB,sideC

2020/10/28354.6包

包是Java語(yǔ)言中有效地管理類的一個(gè)機(jī)制。2020/10/28361.包語(yǔ)句

通過關(guān)鍵字package聲明包語(yǔ)句。package語(yǔ)句作為Java源文件的第一條語(yǔ)句,指明該源文件定義的類所在的包。package語(yǔ)句的一般格式為:

package包名;如果源程序中省略了package語(yǔ)句,源文件中你定義命名的類被隱含地認(rèn)為是無名包的一部分,即源文件中定義命名的類在同一個(gè)包中,但該包沒有名字。包對(duì)應(yīng)著文件系統(tǒng)的目錄層次結(jié)構(gòu)包名可以是一個(gè)合法的標(biāo)識(shí)符,也可以是若干個(gè)標(biāo)識(shí)符加“.”分割而成。2020/10/2837在G:\java\cn\mybole編譯的位置:運(yùn)行的位置:源文件的位置:2020/10/28382.import語(yǔ)句

使用import語(yǔ)句可以引入包中的類。在編寫源文件時(shí),除了自己編寫類外,我們經(jīng)常需要使用Java提供的許多類,這些類可能在不同的包中。在學(xué)習(xí)Java語(yǔ)言時(shí),使用已經(jīng)存在的類,避免一切從頭做起,這是面向?qū)ο缶幊痰囊粋€(gè)重要方面。2020/10/2839/jre/lib/rt.jar包,io,lang..java.lang自動(dòng)導(dǎo)入,如其中的system類和String類,不需import語(yǔ)句2020/10/2840導(dǎo)入系統(tǒng)提供的類2020/10/2841類的說明符public說明符沒有說明符類名前沒有public,則只能在同一個(gè)包中的類訪問,否則必須聲明為public類也可以將此類在要訪問它的類中被import,或給出完整路徑2020/10/28424.7訪問權(quán)限

類創(chuàng)建了一個(gè)對(duì)象之后,該對(duì)象可以通過“.”運(yùn)算符操作自己的變量、使用類中的方法,但對(duì)象操作自己的變量和使用類中的方法是有一定限制的。所謂訪問權(quán)限是指對(duì)象是否可以通過“.”運(yùn)算符操作自己的變量或通過“.”運(yùn)算符使用類中的方法。訪問限制修飾符有private、protected和public,都是Java的關(guān)鍵字,用來修飾成員變量或方法。2020/10/2843

classXiyoujiRenwu{pubilcstaticfloatheight,weight;Stringhead,ear,hand,foot,mouth;

publicvoidspeak(Strings){System.out.println(s);}}classA{publicstaticvoidmain(Stringargs[]){XiyoujiRenwuzhubajie;//聲明對(duì)象zhubajie=newXiyoujiRenwu();//為對(duì)象分配內(nèi)存,XiyoujiRenwu.height;

XiyoujiRenwu.height;}}2020/10/28441.私有變量和私有方法

--private

一個(gè)類在另外一個(gè)類中創(chuàng)建一個(gè)對(duì)象后,該對(duì)象不能訪問自己的私有變量和私有方法對(duì)于一個(gè)類的私有類變量(靜態(tài)成員變量),那么在另外一個(gè)類中,也不能通過類名來操作這個(gè)私有類變量。2020/10/28452.共有變量和共有方法

一個(gè)類在另外一個(gè)類中創(chuàng)建一個(gè)對(duì)象后,該對(duì)象能訪問自己的public變量和public方法對(duì)于一個(gè)類的public類變量(靜態(tài)成員變量),那么在另外一個(gè)類中,也能通過類名來操作這個(gè)public類變量。2020/10/28463.友好變量和友好方法

不用private、public、protected修飾符的成員變量和方法被稱為友好變量和友好方法。一個(gè)類在另外一個(gè)類中創(chuàng)建一個(gè)對(duì)象后,如果兩個(gè)類在同一包中,該對(duì)象能訪問自己的友好變量和友好方法對(duì)于一個(gè)類的友好類變量(靜態(tài)成員變量),如果兩個(gè)類在同一包中,那么在另外一個(gè)類中,也能通過類名來操作這個(gè)友好類變量。2020/10/2847注意:2020/10/28484.受保護(hù)的成員變量和方法

一個(gè)類在另外一個(gè)類中創(chuàng)建一個(gè)對(duì)象后,如果兩個(gè)類在同一包中,該對(duì)象能訪問自己的protected變量和protected方法對(duì)于一個(gè)類的protected類變量(靜態(tài)成員變量),如果兩個(gè)類在同一包中,那么在另外一個(gè)類中,也能通過類名來操作這個(gè)protected類變量。2020/10/2849protected和“友好”之間區(qū)別?在繼承上2020/10/28504.8類的繼承

繼承是一種由已有的類創(chuàng)建新類的機(jī)制。先創(chuàng)建一個(gè)共有屬性的一般類,根據(jù)該一般類再創(chuàng)建具有特殊屬性的新類,新類繼承一般類的狀態(tài)和行為,并根據(jù)需要增加它自己的新的狀態(tài)和行為。由繼承而得到的類稱為子類,被繼承的類稱為父類(超類)。Java不支持多重繼承(子類只能有一個(gè)父類)。2020/10/28511.子類

在類的聲明中,通過使用關(guān)鍵字extends來創(chuàng)建一個(gè)類的子類,格式如下:class子類名extends父類名{…}例如:classStudentsextendsPeople{…}2020/10/28522.子類的繼承性

類有可以有兩種重要的成員:成員變量和方法。子類的成員中有一部分是子類自己聲明定義的,另一部分是從它的父類繼承的。所謂子類繼承父類的成員變量作為自己的一個(gè)成員變量,就好象它們是在子類中直接聲明一樣,可以被子類中自己聲明的任何實(shí)例方法操作.所謂子類繼承父類的方法作為子類中的一個(gè)方法,就象它們是在子類中直接聲明一樣,可以被子類中自己聲明的任何實(shí)例方法調(diào)用。2020/10/2853子類和父類在同一包中的繼承性如果子類和父類在同一個(gè)包中,那么,子類自然地繼承了其父類中不是private的成員變量作為自己的成員變量;并且也自然地繼承了父類中不是private的方法作為自己的方法;繼承的成員或方法的訪問權(quán)限保持不變。2020/10/28542020/10/2855子類和父類不在同一包中的繼承性

子類繼承了父類的protected、public成員變量做為子類的成員變量;并且繼承了父類的protected、public方法為子類的方法,繼承的成員或方法的訪問權(quán)限保持不變。子類不能繼承父類的友好變量和友好方法。2020/10/28562020/10/28572020/10/2858訪問權(quán)限小結(jié)Private:-----同包和不同包的其他類中創(chuàng)建的對(duì)象,均不得訪問,只有在本類中創(chuàng)建的對(duì)象可以訪問; 子類也不能繼承;Protected:-----只要是同包中創(chuàng)建的對(duì)象就能訪問;------同包和不同包中的子類均可繼承;缺?。?-----必須是同包中創(chuàng)建的對(duì)象可以訪問;-------同包中創(chuàng)建的子類可以繼承;Public:------任何包中創(chuàng)建的對(duì)象均可訪問;------任何包中創(chuàng)建的子類也可繼承。2020/10/28593.成員變量的隱藏和方法的重寫

父類成員變量的隱藏:只要子類中定義的成員變量和父類中的成員變量同名。方法重寫是指:子類中定義一個(gè)方法,并且這個(gè)方法的名字、返回類型、參數(shù)個(gè)數(shù)和類型與從父類繼承的方法完全相同。如果子類重寫了父類的方法,則運(yùn)行時(shí)系統(tǒng)調(diào)用子類重寫的方法2020/10/28602020/10/2861子類重寫父類時(shí),不能降低訪問權(quán)限2020/10/28624.final關(guān)鍵字

final關(guān)鍵字可以修飾類、成員變量、方法和方法中的參數(shù)。final類不能被繼承,即不能有子類。如String類方法被修飾為final,則這個(gè)方法不能被重寫。成員變量被修飾為final,就是常量,常量必須賦給初值,而且不能再發(fā)生變化;但也可以在構(gòu)造函數(shù)中初始化;方法的參數(shù)被修飾為final,該參數(shù)的值不能被改變。2020/10/2863final舉例final可以定義常量,finalPI=3.1415926;2020/10/28644.9多態(tài)性

多態(tài)性就是指父類的某個(gè)方法被其子類重寫時(shí),可以各自產(chǎn)生自己的功能行為.為什么要多態(tài)?(1)和上轉(zhuǎn)型技術(shù)結(jié)合可以將做什么和怎么做分開(2)后期綁定技術(shù)來保證編碼無需提前知曉導(dǎo)出類就可編程(3)程序擴(kuò)展性好2020/10/2865d2020/10/2866多態(tài)性缺陷基類的私有方法無法覆蓋,無法實(shí)現(xiàn)多態(tài);靜態(tài)方法也無法實(shí)現(xiàn)多態(tài);域也無法使用多態(tài)2020/10/2867構(gòu)造器和多態(tài)構(gòu)造器的調(diào)用順序:調(diào)用基類構(gòu)造器---無限遞歸—調(diào)用成員初始化---導(dǎo)出類的構(gòu)造器2020/10/2868多態(tài)小結(jié)需要數(shù)據(jù)抽象、繼承和動(dòng)態(tài)綁定技術(shù)編程時(shí)要考慮類和類之間的共性以及聯(lián)系可以使的程序具有更好的結(jié)構(gòu)、擴(kuò)展性和可維護(hù)性2020/10/28694.10abstract類和abstract方法

abstract類:用關(guān)鍵字abstract修飾的類(抽象類)。abstractclassA{…}為什么要有抽象類?(1)形成不同子類的通用接口;(2)在編譯中確保不允許產(chǎn)生對(duì)象;2020/10/2870abstract類有如下特點(diǎn)

和普通的類相比,abstract類可以有abstract方法。對(duì)于abstract方法,只允許聲明,不允許實(shí)現(xiàn),而且不允許使用final修飾abstract方法。abstractclassA{intmin(intx,inty){}intmax(intx,inty){returnx>y?x:y;}}2020/10/2871abstract類不能用new運(yùn)算創(chuàng)建對(duì)象

對(duì)于abstract類,我們不能使用new運(yùn)算符創(chuàng)建該類的對(duì)象;需產(chǎn)生其子類,由子類創(chuàng)建對(duì)象;如果一個(gè)類是abstract類的子類,它必須具體實(shí)現(xiàn)父類的abstract方法,這就是為什么不允許使用final修飾abstract方法的原因。AbstractClassA{…..}2020/10/28722020/10/2873abstract方法abstractvoidsubmethod();他所在的類必須標(biāo)為abstract類2020/10/28742020/10/28754.11super關(guān)鍵字

子類不繼承父類的構(gòu)造方法;子類使用父類的構(gòu)造方法,必須:-----在子類的構(gòu)造方法中使用,必須使用關(guān)鍵字super來表示,而且super必須是子類構(gòu)造方法中的頭一條語(yǔ)句。2020/10/28762020/10/2877在子類使用被子類隱藏了的父類的成員變量或方法就可以使用關(guān)鍵字super。比如:super.x、super.play(),就是被子類隱藏的父類的成員變量x和方法play()。2020/10/28782020/10/28794.12接口

Java不支持多繼承性,即一個(gè)類只能有一個(gè)父類。單繼承性使得Java簡(jiǎn)單,易于管理程序。為了克服單繼承的缺點(diǎn),Java使用了接口,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。2020/10/28801.接口的聲明與使用

使用關(guān)鍵字interface來定義一個(gè)接口。接口的定義和類的定義很相似,分為接口的聲明和接口體。接口體中包含常量定義和方法定義兩部分。接口體中只進(jìn)行方法的聲明,不許提供方法的實(shí)現(xiàn),所以,方法的定義沒有方法體,且用分號(hào)“;”結(jié)尾。如:interfacePrintable{finalintMAX=100;voidadd();floatsum(floatx,floaty);}2020/10/2881接口的使用

一個(gè)類通過使用關(guān)鍵字implements聲明自己使用一個(gè)或多個(gè)接口。如果使用多個(gè)接口,用逗號(hào)隔開接口名。如:classAimplementsPrintable,Addable如果一個(gè)類使用了某個(gè)接口,那么這個(gè)類必須實(shí)現(xiàn)該接口的所有方法,即為這些方法提供方法體.2020/10/28822020/10/2883P80的例題2020/10/2884注意:如果實(shí)現(xiàn)接口的類沒有實(shí)現(xiàn)接口的所要的方法,則必須標(biāo)為抽象類;2020/10/2885接口的回調(diào)2020/10/2886Videocard.java---定義接口2020/10/2887Dmeng.java---實(shí)現(xiàn)接口中的方法2020/10/2888Mainboard.java----2020/10/2889Computer.java2020/10/28902020/10/28912020/10/28922020/10/28932020/10/28942020/10/2895抽象類和接口的區(qū)別?(1)單繼承,多實(shí)現(xiàn);(2)含有成員變量,只有常量;(3)成員方法可以部分實(shí)現(xiàn),成員方法都不能實(shí)現(xiàn)。盡量選inferface2020/10/28964.14內(nèi)部類

Java支持在一個(gè)類中聲明另一個(gè)類,這樣的類稱作內(nèi)部類,而包含內(nèi)部類的類成為內(nèi)部類的外嵌類。內(nèi)部類的類體中不可以聲明類變量和類方法。外嵌類的類體中可以用內(nèi)部類聲明對(duì)象,作為外嵌類的成員。2020/10/2897通過內(nèi)部類可以訪問外部類的私有方法或私有成員變量2020/10/2898外部類成員變量、內(nèi)部類成員變量和局部變量之間?2020/10/2899//在外部類的非static中//內(nèi)部類的方法中的局部變量//內(nèi)部類的成員變量//外部類的成員變量2020/10/281002020/10/28101內(nèi)部類的字節(jié)碼文件名2020/10/28102Innerinner=newInner();2020/10/28103內(nèi)部類解決了多重繼承問題如書上P204例子2020/10/28104內(nèi)部類可以設(shè)計(jì)為private或protected,而普通類只可以是友好的和public,如果是private,除了他所在的外部類外其他的類中都不可以訪問它,而protected時(shí)候,只有外部類、外部類的繼承類,和同包類,其他都不能訪問隱蔽了內(nèi)部類2020/10/281052020/10/28106如果內(nèi)部類放在某個(gè)方法里,就只有這個(gè)方法可以訪問它2020/10/28107匿名類2020/10/28108C++如何處理錯(cuò)誤的?Java解決方案是常規(guī)的操作和錯(cuò)誤處理操作分開。2020/10/281094.16異常類

程序運(yùn)行出現(xiàn)異常時(shí),Java運(yùn)行環(huán)境就用異常類Exception的相應(yīng)子類創(chuàng)建一個(gè)異常對(duì)象,并等待處理,例如,讀取一個(gè)不存在的文件時(shí),運(yùn)行環(huán)境就用異常類IOException創(chuàng)建一個(gè)對(duì)象2020/10/281102020/10/281112020/10/281122020/10/281132020/10/281142020/10/281152020/10/281162020/10/28117異常對(duì)象可以調(diào)用如下方法得到或輸出有關(guān)異常的信息:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論