Java學習筆記5
接口
當一個抽象類,如果抽象類中所有方法都是抽象的,那麽我們就可以把它定義為一個接口,接口是對行為的抽象,類是對屬性和行為的抽象。接口沒有具體方法,也沒有屬性。
接口中可以定義常量。
接口也能繼承接口,可以多級繼承,也可以繼承於多個父接口。
interface A{ @Override @Override @Override @Override |
接口的實現
關鍵字:implements
語法:class 類名 implements 接口名{}
一個類如果實現了接口,就必須要實現接口中所有的抽象方法。
接口在JDK1.8中的特性
接口可以定義靜態的方法,用接口名打點調用。
可以選擇性地實現接口中的方法,定義默認方法即可。語法: public default void 方法名(){}
接口被類實現的時候沒有強制性,可以重寫方法。
接口的好處
1.接口定義的是一種標準,可以使我們的代碼分層開發,分模塊開發。
2.降低代碼的耦合度,提高代碼的可擴展性和可維護性。
3.接口改進了單繼承的局限。
接口和抽象類的區別
1.接口是行為的抽象。可以有靜態方法,抽象方法和默認方法。抽象類可以有所有方法。
2.接口和抽象類都不能實例化,接口需要類來實現,然後通過類實例化;抽象類需要子類來繼承,然後通過子類實例化。
3.抽象類智能單繼承,接口可以多繼承(jdk1.7),接口還可以多實現。
4.接口中的屬性是static final類型的,抽象類中的屬性跟普通類中的屬性沒有區別。
5.接口中的方法默認就是抽象的,不需要加abstract,抽象類中的抽象方法需要加上abstract。
父子類之間類型轉換
子類→父類:
語法:父類名 對象名 = new 子類名();
在父子類、抽象類、接口中,都是可行的。子類的類型可以自動轉換成父類的類型,如果子類重寫了父類的方法,那麽使用父類的引用調用方法時,調用的是子類的方法。
屬性是不適用的,屬性沒有重寫的概念。子類的實例賦給父類的引用的時候,調用屬性時,調用的是父類的屬性。
父類→子類:
前提:這個父類的類型的引用有真身,而且只能轉換成這個真身對應的子類類型。
語法:子類名 新對象名 = (子類名)原對象名;
Java學習筆記5