日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

抽象类与接口 day-11.2

發(fā)布時(shí)間:2024/1/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 抽象类与接口 day-11.2 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

通??梢哉f(shuō)四邊形具有4條邊,或者更具體點(diǎn),平行四邊形是具有對(duì)邊平行且相等特性的特殊四邊形,等腰三角形是其中兩邊相等的三角形,這些描述都是合乎情理的,但是對(duì)于圖形對(duì)象卻不能使用具體的語(yǔ)言進(jìn)行描述,他有幾條邊,究竟是什么圖像,沒(méi)有人能說(shuō)清楚,這種類在java中被定義為抽象類。

一:抽象類

在解決實(shí)際問(wèn)題時(shí),一般將父類定義為抽象類,需要使用這個(gè)父類進(jìn)行繼承與多態(tài)處理。回想繼承與多態(tài)的原理,繼承樹(shù)中越是在上邊的類越抽象,如鴿子類繼承鳥(niǎo)類,鳥(niǎo)類繼承動(dòng)物類等。在多態(tài)機(jī)制中,并不需要將父類初始化對(duì)象,我們需要的只是子類對(duì)象,所以在java中設(shè)置抽象類不可以實(shí)例化對(duì)象,因?yàn)閳D形類不能抽象出任何一種具體圖形,但他們的子類可以。

抽象類的語(yǔ)法:

public abstract class Test{

????????? abstract void testAbstract();//定義抽象方法

}

其中,abstract是定義抽象類的關(guān)鍵字。

使用abstract關(guān)鍵字定義的類稱為抽象類,而使用這個(gè)關(guān)鍵字定義的方法稱為抽象方法;抽象方法沒(méi)有方法體,這個(gè)方法本身沒(méi)有任何意義,除非他被重寫(xiě),而承載這個(gè)抽象方法的抽象類必須被繼承,實(shí)際上抽象類除了被繼承之外沒(méi)有任何意義。

反過(guò)來(lái)講,如果聲明一個(gè)抽象的方法,就必須將繼承這個(gè)抽象方法的類定義為抽象類,不可能在非抽象類中獲得抽象方法。換句話說(shuō),只要類中有一個(gè)抽象方法,此類就被標(biāo)記為抽象類。

抽象類被繼承后需要實(shí)現(xiàn)其中所有的抽象方法,也就是保證相同的方法名稱,參數(shù)列表和相同返回值類型創(chuàng)建出非抽象方法,當(dāng)然也可以是抽象方法。

繼承抽象類的所有子類需要將抽象類中的抽象方法進(jìn)行覆蓋。這樣在多態(tài)機(jī)制中,就可以將父類修改為抽象類,將方法修改成抽象方法,然后每個(gè)子類都重寫(xiě)這個(gè)方法類處理。但這又會(huì)出現(xiàn)我們剛探討的多態(tài)是討論的問(wèn)題,程序中灰有太多冗余的代碼,同時(shí)這樣的父類局限性很大,也許某個(gè)不需要父類方法的子類也不得不重寫(xiě)方法。如果將方法放置在另外一個(gè)類中,這樣讓那些需要方法的類繼承該類,而不需要方法的類繼承圖形類,但所有的子類都需要圖形類,因?yàn)檫@些類是從圖形類中被導(dǎo)出的,同時(shí)某些類還需要方法,但是在java中規(guī)定,類不能同時(shí)繼承多個(gè)父類,面臨這種問(wèn)題,接口的概念就出現(xiàn)了。

二:接口

1.接口簡(jiǎn)介

接口是抽象類的延伸,可以將它看做是純粹的抽象類,接口中的所有方法,都沒(méi)有方法體。對(duì)于上面的問(wèn)題,可以將方法封裝到一個(gè)接口中,使需要方法的類實(shí)現(xiàn)這個(gè)接口,同時(shí)也繼承圖形類,這就是接口存在的必要性。

接口使用interface關(guān)鍵字進(jìn)行定義,其語(yǔ)法如下:

public interface drawTest{

????? void draw();//接口內(nèi)的方法,省略abstract關(guān)鍵字

}

*public :接口可以像類一樣被權(quán)限修飾符修飾,但public關(guān)鍵字僅限用與接口在與其同名的文件中被定義。

*interface :定義接口關(guān)鍵字。

*drawTest:接口名稱。

一個(gè)類實(shí)現(xiàn)一個(gè)接口可以使用implements關(guān)鍵字,代碼如下:

public class S extends Y implements drawTest{

········

}

注意:在接口中定義的方法必須被定義為public或abstract形式,其他修飾符權(quán)限不被java編譯器認(rèn)可,即使不將該方法聲明我public形式,他也是public。

說(shuō)明:在接口中定義的任何字段都自動(dòng)是static 和final的。

2、接口與繼承

我們知道在java中不允許多重繼承,但使用接口就可以實(shí)現(xiàn)多重繼承,因?yàn)橐粋€(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,這樣可以將所有需要繼承的接口放置在implements關(guān)鍵字后并使用逗號(hào)隔開(kāi),但這可能會(huì)在一個(gè)類中產(chǎn)生龐大的代碼量,因?yàn)槔^承一個(gè)接口時(shí)需要實(shí)現(xiàn)接口中所有的方法。

多重繼承的語(yǔ)法如下:

class 類名 implements 接口1,接口2,接口3·····,接口n

在定義一個(gè)接口時(shí)可使該接口繼承另外一個(gè)接口:

interface f1{

}

interface f2 extends f1{

}

轉(zhuǎn)載于:https://blog.51cto.com/12170526/1868681

總結(jié)

以上是生活随笔為你收集整理的抽象类与接口 day-11.2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。