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