資源描述:
《java抽象類和接口講義課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、抽象類和接口抽象類用關(guān)鍵字abstract修飾類稱為abstract類,抽象類,如:abstractclassA{……}abstract類不能用new運(yùn)算創(chuàng)建對(duì)象,必須產(chǎn)生其子類,由子類創(chuàng)建對(duì)象。抽象方法抽象類中可以包含普通變量和方法,同時(shí)也可以包含抽象方法;抽象方法:被abstract修飾的方法被稱作的抽象方法,抽象方法沒(méi)有方法體,即只有方法的聲明沒(méi)有方法的實(shí)現(xiàn)例如:publicabstractdoublearea();當(dāng)一個(gè)類中含有抽象方法時(shí),其所屬的類必須聲明為抽象類。abstractclassA{intnum=0;//抽象類中
2、可以有實(shí)例變量Strings=newString("abstract");//抽象類中可以有非抽象方法publicStringset(Stringss){s=ss;returns;}abstractintget();//注意:沒(méi)有大括弧("{}")}classBextendsA{privateintpoint=0;//子類如果不是抽象類的話,必須覆蓋父類中的抽象方法publicintget(){//子類在重寫父類的時(shí)候可以擴(kuò)大父類方法的權(quán)限num++;returnnum;}}抽象類抽象類的定義如下:抽象方法的定義:publicabst
3、ractclassShape{//定義體}//為使此類有用,它必須有子類publicabstract(參數(shù)列表);對(duì)抽象類和抽象方法的說(shuō)明在一個(gè)抽象類中可以有實(shí)例變量和非抽象方法存在抽象方法的定義中,沒(méi)有{}如果一個(gè)類中含有抽象方法,那么該類一定要被顯示聲明為抽象類抽象類是不可以實(shí)例化的,也即不能用抽象類來(lái)創(chuàng)建對(duì)象如:abstractclassPerson{Stringname;publicvoidgetName();}classTest{Personp=newPerson();//這句
4、話編譯不通過(guò),原因是因?yàn)槌橄箢惒荒軐?shí)例化}生活中的接口電腦主板上的PCI插槽的規(guī)范就類似于Java接口聲卡顯卡網(wǎng)卡每種卡的內(nèi)部結(jié)構(gòu)都不相同,可以把聲卡、網(wǎng)卡、顯卡都插在PCI插槽上,而不用擔(dān)心哪個(gè)插槽是專門插哪個(gè)卡的主板接口接口(interface)是抽象類功能的另一種實(shí)現(xiàn)方法,可將其想象為一個(gè)“純”的抽象類接口中所有的方法都是抽象方法,都沒(méi)有方法體Java通過(guò)允許一個(gè)類實(shí)現(xiàn)(implements)多個(gè)接口從而實(shí)現(xiàn)了比多重繼承更加強(qiáng)大的能力,并具有更加清晰的結(jié)構(gòu)接口的定義接口的定義形式為:interface接口名稱[extends父接
5、口1,父接口2..]{……//方法原型或靜態(tài)常量}//接口可以從多個(gè)父接口中繼承接口本身也具有數(shù)據(jù)成員與方法,但數(shù)據(jù)成員一定要賦初值,且為常量,因此此值將不能再更改Interface在接口中定義的成員變量都缺省為終極類變量(即常量),即系統(tǒng)會(huì)將其自動(dòng)增加public,final和static這三個(gè)關(guān)鍵字,并且對(duì)該變量必須設(shè)置初值在接口中定義的成員方法都缺省為公共的抽象方法,即系統(tǒng)會(huì)將其自動(dòng)增加public,abstract這兩個(gè)關(guān)鍵字如:interfaceCharStorage{inta=10;//雖然這沒(méi)顯示聲明變量a是靜態(tài)常量,但
6、系統(tǒng)在處理的時(shí)候就會(huì)把a(bǔ)當(dāng)成靜態(tài)常量來(lái)處理voidput(charc);//這其實(shí)是個(gè)公有的的抽象方法charget();}接口的實(shí)現(xiàn)類接口實(shí)現(xiàn)的方法:通過(guò)定義一個(gè)類同時(shí)采用implements來(lái)指明所實(shí)現(xiàn)的接口名,并在該類中覆蓋接口中的所有成員方法且給出成員函數(shù)體定義。要點(diǎn):類中所實(shí)現(xiàn)的接口中的成員函數(shù)的原型都應(yīng)該與它在接口中的原型定義保持一致;并在類中重寫接口中的所有成員方法;通過(guò)實(shí)現(xiàn)接口,從而可擴(kuò)充或增加該類的功能。接口只定義方法名,而類實(shí)現(xiàn)接口內(nèi)部的方法的代碼接口的繼承只是繼承接口本身,而非代碼,從而不會(huì)產(chǎn)生重復(fù)繼承多次。程序
7、實(shí)例interfaceComputer{publicvoidComputeData();//計(jì)算機(jī)應(yīng)該有數(shù)據(jù)計(jì)算的功能publicvoidSaveData();//計(jì)算機(jī)應(yīng)該有存儲(chǔ)數(shù)據(jù)的功能publicvoidPrintData();//計(jì)算機(jī)應(yīng)該有打印數(shù)據(jù)的功能publicvoidDisplayData();//計(jì)算機(jī)應(yīng)該有顯示數(shù)據(jù)的功能}定義出接口,實(shí)現(xiàn)只給出功能的描述在設(shè)計(jì)PC機(jī)時(shí)來(lái)實(shí)現(xiàn)它自己的功能classPCComputerimplementsComputer{//實(shí)現(xiàn)它的計(jì)算、存儲(chǔ)和打印數(shù)據(jù)、顯示數(shù)據(jù)的功能publ
8、icvoidComputeData(){//具體實(shí)現(xiàn)代碼}publicvoidSaveData(){//具體實(shí)現(xiàn)代碼}publicvoidPrintData(){//具體實(shí)現(xiàn)代碼}publicvoidDisplayDat