資源描述:
《java抽象類與接口技術(shù)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、3.1v抽象類抽象類實(shí)際上也是一個(gè)類,只是與之前的普通類相比,在抽象類中多了抽象方法。抽象方法是只聲明而未實(shí)現(xiàn)的方法,所有的抽象方法必須使用abstract關(guān)鍵字聲明,包含抽象方法的類也必須使用abstractclass聲明。一個(gè)抽象類的定義abstractclassA{privateStringname="WWW”;publicvoidfun(){//此處定義了一個(gè)普通方法System.out.println(”HelloWorld!!!");}publicabstractvoidprint();};可以發(fā)現(xiàn)抽象方法后面沒有“{}”,則表示方法沒有實(shí)現(xiàn)。如果對抽象方法直接實(shí)例化,
2、則會岀現(xiàn)無法實(shí)例化的錯(cuò)誤。abstractclassA{privateStringname=”WWW”;publicvoidfun(){//此處定義了一個(gè)普通方法System.out.println(HHelloWorld!!!");}publicabstractvoidprint();};publicclassDemoOl{publicstaticvoidmain(Stringargs[]){Aa=newA();}};抽象類的使用原則:1、抽象類必須有子類,抽象類必須被繼承2、抽象類的子類如果不是抽象類的話,則必須覆寫里面的全部抽象方法。3、抽象類不能直接實(shí)例化,必須依靠子類完成
3、。進(jìn)一步完善之前的程序:abstractclassA{privateStringname=”WWW”;publicvoidfun(){//此處定義了一個(gè)普通方法System.out.println(”HelloWorld!!!");}publicabstractvoidprint();classBextendsA{//覆寫抽彖方法publicvoidprint(){System.out.println(??**********************??);}};publicclassDemo02{publicstaticvoidmain(Stringargs[]){Bb=newB
4、();b.print();b.fun();}};討論問題:1、能否用final修飾一個(gè)抽象類呢??因?yàn)槌橄箢惐仨毐蛔宇惱^承,而被final修飾的類不能有子類。所以不能2、抽象類中能否有構(gòu)造方法呢?可以有abstractclassPerson{privateStringname;privateintage;//單獨(dú)按一個(gè)類來說,應(yīng)該可以直接在構(gòu)造方法中初始化publicPerson(Stringname,intage){this.name=name;this.age=age;publicabstractStringgetlnfo();publicStringgetName(){ret
5、urnthis.name;}publicintgetAge(){returnthis.age;}};classStudentextendsPerson{privateStringschool;publicStudent(Stringname,intage,Stringschool){super(name,age);this.school=school;}publicStringgetlnfo(){return"姓名:”+super.getName()+”,年齡:"+super.getAge()+”,學(xué)校:M+this.school;}};publicclassDemo03{publ
6、icstaticvoidmain(Stringargs[]){Studentstu=newStudent("張三”,30,”北京大學(xué)");System.out.println(stu.getInfo());}};抽象類中可以有構(gòu)造方法,但是要求在沒有無參構(gòu)造方法的時(shí)候,子類必須明確的調(diào)用父類屮的構(gòu)造方法?;仡櫍鹤宇悓ο蟮膶?shí)例化過程?子類對象實(shí)例化的時(shí)候默認(rèn)會先去調(diào)用父類中的無參構(gòu)造方法,如果父類中沒有無參構(gòu)造,則可以通過super指定調(diào)用父類中的其他構(gòu)造方法。注意:一個(gè)類只可以繼承一個(gè)抽彖類,屬于單繼承。32接口接口定義:?只包含抽象方法和全局常量的類稱為接口。?接口使用inter
7、face進(jìn)行定義。interfaceA{publicstaticfinalStringINFO="HELLO";publicabstractvoidprint();}—接口定義完z后,一個(gè)接口也必須依靠其子類使用,子類繼承接口的概念稱為實(shí)現(xiàn)。格式如下:class子類implements接口名稱{}接口的子類如果不是抽象類的話,則也必須覆寫里面的全部抽象方法。interfaceA{publicstaticfinalStringINFO="HELLO";publicabs