深入java抽象类和接口
目錄:
1.抽象類
2.接口
3.抽象類和接口的區(qū)別
1.抽象類
(1)抽象方法:
抽象方法是一種特殊的方法:它只有聲明,而沒有具體的實現(xiàn)。抽象方法的聲明格式為:
abstract void a();抽象方法必須用abstract關(guān)鍵字進行修飾,如果一個類含有抽象方法,則稱這個類為抽象類,抽象類必須在類前用abstract關(guān)鍵字修飾。因為抽象類中含有無具體實現(xiàn)的方法,
(2)抽象類.
abstract class a{abstract void cun(); }注意事項:
1.抽象方法必須為public或者protected(因為如果為private,則不能被子類繼承,子類便無法實現(xiàn)該方法),缺省情況下默認為public。
2.如果一個類繼承于一個抽象類,則子類必須實現(xiàn)父類的抽象方法。如果子類沒有實現(xiàn)父類的抽象方法,則必須將子類也定義為為abstract類。
3.抽象類不能用來創(chuàng)建對象;
4.不能用抽象類創(chuàng)建對象,但是抽象類有構(gòu)造器
5.外部抽象類不能用static修飾但是內(nèi)部抽象類可以用static修飾
6.抽象類可以繼承抽象類也可以實現(xiàn)接口
7.外部抽象類不能用static
有可能有的小伙伴就會疑惑了
外部抽象類不能用static那么內(nèi)部抽象類就行?
回答是yes
例子:
臥槽****還能這么玩
當然可以
當內(nèi)部的抽象類被聲明成靜態(tài)的時,就相當于一個外部抽象類,就可以用extends 外部類.內(nèi)部類繼承了
2.接口
(1)定義一個接口的形式
interface aaa{}(2)接口的注意事項:
1.接口中的變量會被隱式地指定為public static final變量
2.方法且只能是public abstract方法,并且接口中所有的方法不能有具體的實現(xiàn),也就是說,接口中的方3.接口可以多繼承
4.一個類可以實現(xiàn)多個接口
(3)關(guān)于接口的繼承和實現(xiàn)的實例:
package untl1; public class aaa implements ddd,eee{//注意實現(xiàn)多個接口的格式public void bbb(){System.out.println("bbb");}public void ccc(){System.out.println("ccc");}public void ddd(){System.out.println("ddd");}public void eee(){System.out.println("eee");}public static void main(String[] args) {} } interface bbb{void bbb();} interface ccc {void ccc(); } interface ddd extends ccc,bbb{//這里可以繼承多個接口void ddd(); } interface eee {void eee(); }3.抽象類和接口的區(qū)別
1.抽象類可以有構(gòu)造方法,但接口沒有
2.抽象類可以有普通的成員變量,接口中沒有普通成員變量
3.抽象類可以有非抽象方法接口全是抽象方法
4.抽象類的抽象方法的訪問權(quán)限可以是非private的另外三個但是接口只能是public
5.抽象類中可以包含靜態(tài)方法接口中不能包含
6.一個類只能繼承一個抽象類,一個類可以實現(xiàn)多個接口
7.抽象類和接口都能包含靜態(tài)成員變量但接口里邊只能是public static final,而且接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法,而抽象類可以有靜態(tài)代碼塊和靜態(tài)方法;
總結(jié)
以上是生活随笔為你收集整理的深入java抽象类和接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java的final也并不是那么高冷
- 下一篇: java重载与重写的区别你懂了吗