1、抽象類
[public] abstract class ClassName {
abstract void fun();
}
①概念
被abstract修飾的類稱爲抽象類,一般情況下抽象類中都抽象方法,所以不能被創建對象,特殊情況下抽象類可以不含有抽象方法(無意義)。
②抽象方法
抽象類中的抽象方法必須是被public或者protected修飾(因爲如果被private修飾,子類就不能去實現該方法,則無意思),缺省默認是public。
③如果一個類繼承一個抽象類,則子類必須實現父類的所有抽象方法,如果有抽象方法沒有被實現,則子類也必須定義爲抽象類。
2、接口
[public] interface InterfaceName {
}
①接口可以說是抽象類的再抽象。極度的抽象。
②接口中變量都必須用public static final修飾,接口中的方法都必須是public abstract修飾(不寫的話默認)。
③一個類可以通過implements實現一個接口,但是必須實現接口中所有的方法。(如果接口中有的方法沒被實現,那麼這個類必須是抽象的)
④一個類可以實現多個接口。
3、接口和抽象類的區別
①接口中的方法都是抽象的且被public abstract修飾的,抽象類中的可以有非抽象方法,而且抽象方法還可以被protected修飾。
②接口中的成員變量必須是public static final修飾的,抽象類是可以各種各樣的。
③單繼承,多實現。
④抽象類是對類的整體的抽象,而接口是對局部行爲的抽象。
⑤抽象類是模板式設計,接口是輻射式設計(行爲規範)。抽象類就是個模板,其他子類直接繼承就可以使用裏面的內容,當抽象類這個模板進行修改時,子類不需要修改,可以直接使用。接口是一個行爲規範,當接口修改的時候,行爲規範修改了,那實現他的類都得修改。