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