版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、項(xiàng)目1.什么是抽象類某些類在現(xiàn)實(shí)世界中是不能直接找到其對(duì)應(yīng)的實(shí)例的,如車這個(gè)類,不可能為它找到一個(gè)對(duì)應(yīng)的事物,因?yàn)楝F(xiàn)實(shí)世界中只有汽車、自行車、火車等事物,而它們都是車的子類,不能說是車這個(gè)類的實(shí)例,這樣的類稱為抽象(abstract)類。l 抽象類和抽象方法的定義抽象類的定義: public abstract class 類名 抽象方法的定義: public abstract <返回類型> 方法名 (參數(shù)列表);例如:abstract class basic abstract void sleep();public static void main(String args) Sys
2、tem.out.println("Hello World!");² 明確:v Java允許在類中只聲明方法而不提供方法的實(shí)現(xiàn)。這種只有聲明而沒有方法體的方法稱為抽象方法,而包含一個(gè)或多個(gè)抽象方法的類稱為抽象類。 v 抽象類在使用上有特殊的限制,即不能直接創(chuàng)建抽象類的實(shí)例,需要繼承該抽象類,并在實(shí)現(xiàn)繼承的子類中重寫所有的抽象方法。v 在類中沒有方法體的方法,就是抽象方法。v 含有抽象方法的類,即為抽象類。v 如果一個(gè)子類沒有實(shí)現(xiàn)抽象基類中所有的抽象方法,則子類也成為一個(gè)抽象類。v 構(gòu)造方法、靜態(tài)方法、私有方法、final方法不能被聲明為抽象的方法。項(xiàng)目2:抽象類創(chuàng)建
3、實(shí)例public abstract class Shape /形狀類protected double length;/長(zhǎng)protected double width;/寬public Shape(double length,double width)this.length=length;this.width=width;public abstract double area();/計(jì)算面積 這是一個(gè)抽象類shape,它提供了所有子類需要的屬性和方法,其中的抽象方法area()是求面積(體積)的意思,它只是提供了這個(gè)類的對(duì)外接口的模式,至于它的子類怎
4、么計(jì)算,與它無關(guān)。而shape的非抽象子類,如Triangle和Rectangle等都必須實(shí)現(xiàn)area()這個(gè)方法,但實(shí)現(xiàn)的方法體不一樣。public class Triangle extends Shape/三角形Triangle(double num,double num1)super(num,num1);public double area()/三角形面積return length*width/2;public class Rectangle extends Shape /矩形 Rectangle(double num,double num1) super(num,num1); publ
5、ic double area()/矩形面積 return length*width; public class TestArea public static void main(String args) Triangle tr=new Triangle(3,5);Rectangle re=new Rectangle(4,6);System.out.println("三角形的面積"+tr.area();System.out.println("矩形的面積"+re.area();接口項(xiàng)目3: 什么是接口 接口(interface)在有些資料上稱為界面。Java
6、的接口與包相似,也是用來組織應(yīng)用中的各類并調(diào)節(jié)它們的相互關(guān)系的一種結(jié)構(gòu)。更準(zhǔn)確地說,接口是用來實(shí)現(xiàn)類間多重繼承功能的結(jié)構(gòu)。所謂多重繼承,是指一個(gè)子類可以有一個(gè)以上的直接父類,該子類可以繼承它所有直接父類的成員。某些面向?qū)ο蟮恼Z言,在Java中,出于簡(jiǎn)化程序結(jié)構(gòu)的考慮,不再支持類間的多重繼承而只支持單重繼承,即一個(gè)類至多只能有一個(gè)直接父類。然而在解決實(shí)際問題的過程中,僅僅依靠單重繼承在很多情況下都不能將問題的復(fù)雜性表述完整,需要其他的機(jī)制作為輔助。由于Java只支持單重繼承,所以Java程序中的類層次結(jié)構(gòu)是樹狀結(jié)構(gòu),這種樹狀結(jié)構(gòu)在處理某些復(fù)雜問題時(shí)會(huì)顯得力不從心。同時(shí)隨著類結(jié)構(gòu)樹的生長(zhǎng),越是處在
7、下層的子類,它的間接父類(間接父類是直接父類的父類,即祖先)越多,所繼承的方法也會(huì)越來越多,造成子類成員的膨脹、龐雜,難以管理和掌握。為了使Java程序的類層次結(jié)構(gòu)更加合理,更符合實(shí)際問題的本質(zhì),編程者可以把用于完成特定功能的若干屬性組織成相對(duì)獨(dú)立的屬性集合;凡是需要實(shí)現(xiàn)這種特定功能的類,都可以繼承這個(gè)屬性集合并在類內(nèi)使用它,這種屬性集合就是接口。需要特別說明的是,Java中一個(gè)類獲取某一接口定義的功能,并不是通過直接繼承這個(gè)接口中的屬性和方法來實(shí)現(xiàn)的。因?yàn)榻涌谥械膶傩远际浅A浚涌谥械姆椒ǘ际菦]有方法體的抽象方法。也就是說,接口定義的僅僅是實(shí)現(xiàn)某一特定功能的一組功能的對(duì)外接口和規(guī)范,而并沒有
8、真正地實(shí)現(xiàn)這個(gè)功能,這個(gè)功能的真正實(shí)現(xiàn)是在“繼承”這個(gè)接口的各個(gè)類中完成的,要由這些類來具體定義接口中各抽象方法的方法體。子項(xiàng)目2:聲明接口Java中聲明接口的語法如下:public interface 接口名 extends 父接口名列表 / 接口體 / 常量域聲明 publicstaticfinal 域類型 域名 = 常量值; / 抽象方法聲明 publicabstractnative返回值 方法名( 參數(shù)列表 ) throw 異常列表; 接口是由常量和抽象方法組成的特殊類。一個(gè)類只能有一個(gè)父類,但是它可以同時(shí)實(shí)現(xiàn)若干個(gè)接口。這種情況下如果把接口理解成特殊的類,那么這個(gè)類利用接口實(shí)際上就獲
9、得了多個(gè)父類,即實(shí)現(xiàn)了多重繼承。 l 接口的訪問控制符只有public一個(gè)。用public修飾的接口是公共接口,可以被所有的類和接口使用,而沒有public修飾符的接口則只能被同一個(gè)包中的其他類和接口利用。接口體的聲明是定義接口的重要部分。接口體由兩部分組成:一部分是對(duì)接口中屬性的聲明,另一部分是對(duì)接口中方法的聲明。正如前面已經(jīng)指出的,接口中的屬性都是用final修飾的常量,接口中的方法都是用abstract修飾的抽象方法。在接口中只能給出這些抽象方法的方法名、返回值和參數(shù)列表,而不能定義方法體,即僅僅規(guī)定了一組信息交換、傳輸和處理的“接口”。需要注意的是,接口中的所有屬性都必須是public
10、 static final,這是系統(tǒng)默認(rèn)的規(guī)定,所以接口屬性也可以沒有任何修飾符,其效果完全相同。同樣,接口中的所有方法都必須是默認(rèn)的public abstract,無論是否有修飾符顯式地限定它。接口中方法的方法體可以由Java語言書寫,也可以由其他語言書寫。在后一種情況中,接口方法可以由native修飾符修飾。 項(xiàng)目4:實(shí)現(xiàn)接口接口的聲明僅僅給出了抽象方法,相當(dāng)于程序開發(fā)早期的一組協(xié)議,而具體地實(shí)現(xiàn)接口所規(guī)定的功能,則需某個(gè)類為接口中的抽象方法書寫語句并定義實(shí)在的方法體,稱為實(shí)現(xiàn)這個(gè)接口。一個(gè)類要實(shí)現(xiàn)接口時(shí),請(qǐng)注意以下問題:(1) 在類的聲明部分,用implements關(guān)鍵字聲明該類將要實(shí)現(xiàn)
11、哪些接口。(2) 如果實(shí)現(xiàn)某接口的類不是abstract的抽象類,則在類的定義部分必須實(shí)現(xiàn)指定接口的所有抽象方法,即為所有抽象方法定義方法體,而且方法頭部分應(yīng)該與接口中的定義完全一致,即有完全相同的返回值和參數(shù)列表。(3) 如果實(shí)現(xiàn)某接口的類是abstract的抽象類,則它可以不實(shí)現(xiàn)該接口所有的方法。但是對(duì)于這個(gè)抽象類任何一個(gè)非抽象的子類而言,它們父類所實(shí)現(xiàn)的接口中的所有抽象方法都必須有實(shí)在的方法體。這些方法體可以來自抽象的父類,也可以來自子類自身,但是不允許存在未被實(shí)現(xiàn)的接口方法。這主要體現(xiàn)了非抽象類中不能存在抽象方法的原則。(4) 一個(gè)類在實(shí)現(xiàn)某接口的抽象方法時(shí),必須使用完全相同的方法頭。
12、如果所實(shí)現(xiàn)的方法與抽象方法有相同的方法名和不同的參數(shù)列表,則只是在重載一個(gè)新的方法,而不是實(shí)現(xiàn)已有的抽象方法。(5) 接口的抽象方法的訪問限制符都已指定為public,所以類在實(shí)現(xiàn)方法時(shí),必須顯式地使用public修飾符,否則將被系統(tǒng)警告為縮小了接口中定義的方法的訪問控制范圍。interface sportvoid run();void jump();/*class tjsport implements sportpublic void run()System.out.println("短跑");public void jump()System.out.println(&q
13、uot;跳遠(yuǎn)");/*8public static void main(String args) tjsport z=new tjsport();z.run();z.jump();項(xiàng)目5:接口實(shí)現(xiàn)類1:interface sportvoid run();void jump();類2:interface personvoid skin();類3: 實(shí)現(xiàn)接口class dy implements sport,personpublic void run()System.out.println("短跑"); public void jump()System.out.pri
14、ntln("跳遠(yuǎn)"); public void skin()System.out.println("黑色");/*public static void main(String args) dy z=new dy(); z.run(); z.jump(); z.skin();項(xiàng)目6:instanceof 運(yùn)算符v 主要功能:判斷某一個(gè)對(duì)象是否是一個(gè)類的實(shí)例class Animalclass Fish extends Animalclass instancepublic static void main (String args)Animal an=new Animal();Fish fh=new Fish();if (an instanceof Animal)System.out.println("an是動(dòng)物類的實(shí)例。"); if (fh instanceof Fish)System.out.println("fh是魚類的實(shí)例。");if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年股票互換協(xié)議
- 2025年度綠色建筑節(jié)能改造工程承包合同模板2篇
- 2025年度電影院場(chǎng)地租賃合同及觀影安全保障與服務(wù)標(biāo)準(zhǔn)協(xié)議3篇
- 2024版移動(dòng)網(wǎng)絡(luò)業(yè)務(wù)伙伴合同版B版
- 2025年度婚禮場(chǎng)地借用與策劃服務(wù)合同3篇
- 2025年度訴訟保全擔(dān)保流程規(guī)范細(xì)則合同3篇
- 2025年度池塘休閑漁業(yè)項(xiàng)目租賃協(xié)議3篇
- 2025年水土保持監(jiān)測(cè)技術(shù)咨詢與旅游開發(fā)合同3篇
- 二零二五年空調(diào)清洗保養(yǎng)及節(jié)能效益分析合同3篇
- 2025年版健康養(yǎng)老服務(wù)合同4篇
- 2024-2025學(xué)年成都高新區(qū)七上數(shù)學(xué)期末考試試卷【含答案】
- 2025年浙江杭州市西湖區(qū)專職社區(qū)招聘85人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《數(shù)學(xué)廣角-優(yōu)化》說課稿-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)人教版
- “懂你”(原題+解題+范文+話題+技巧+閱讀類素材)-2025年中考語文一輪復(fù)習(xí)之寫作
- 2025年景觀照明項(xiàng)目可行性分析報(bào)告
- 2025年江蘇南京地鐵集團(tuán)招聘筆試參考題庫含答案解析
- 2025年度愛讀書學(xué)長(zhǎng)參與的讀書項(xiàng)目投資合同
- 2024年城市軌道交通設(shè)備維保及安全檢查合同3篇
- 電力系統(tǒng)分析答案(吳俊勇)(已修訂)
- 化學(xué)-河北省金太陽質(zhì)檢聯(lián)盟2024-2025學(xué)年高三上學(xué)期12月第三次聯(lián)考試題和答案
- 期末復(fù)習(xí)試題(試題)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué) 北師大版
評(píng)論
0/150
提交評(píng)論