有了抽象類,為什么還要接口?兩個(gè)具體區(qū)別

xiaoxiao77
2016-01-15
2 回答
舉報(bào)
0/150
提交
取消
2016-01-15
Java中類不允許多繼承,接口可以實(shí)現(xiàn)多繼承
2016-01-15
1、抽象類里面可以有非抽象方法,但接口里只能有抽象方法?
聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽像類(abstract?class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。
不能創(chuàng)建 abstract?類的實(shí)例,然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽像類,并讓它指向具體子類的一個(gè)實(shí)例。
不能有抽像構(gòu)造函數(shù)或抽像靜態(tài)方法。abstract?類的子類為它們父類中的所有抽像方法提供實(shí)現(xiàn),否則它們也是抽像類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。
2、接口(interface)是抽像類的變體。
在接口中,所有方法都是抽像的。
多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得。
接口中的所有方法都是抽像的,沒有一個(gè)有程序體。
接口只可以定義 static?final 成員變量。
接口的實(shí)現(xiàn)與抽象類相似,當(dāng)類實(shí)現(xiàn)接口時(shí),它需要實(shí)現(xiàn)(即將程序體給予)所有這種接口的方法。