生活随笔
收集整理的這篇文章主要介紹了
Java学习笔记_抽象/接口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
抽象方法:就是加上abstract關鍵字,然后去掉大括號,直接分號結束 抽象類:抽象方法所在的類,必須是抽象類。在class前面寫上abstract
如何使用抽象類和抽象方法
不能直接創建new抽象類對象 必須用一個子類來繼承抽象父類 子類必須覆蓋重寫抽象父類當中所有的抽象方法 覆蓋重寫(實現):子類去掉抽象方法abstract關鍵字,然后補上方法體大括號 創建子類對象進行使用
public abstract class Animal { public abstract void eat ( ) ;
}
public class Cat extends Animal { System
. out
. println ( “貓吃魚”
) ;
}
public static void main ( String
[ ] args
) { Cat cat
= new Cat ( ) ; cat
. eat ( ) ;
}
接口就是多個類的公共規范 接口是一種引用數據類型,最重要的內容就是其中的抽象方法
如何定義一個接口的格式 public interface 接口名稱{ //接口內容 }
接口中包含的內容: 常量、抽象方法、默認方法、靜態方法、私有方法
在任何版本的Java中,接口都能定義抽象方法 格式: public abstract 返回值類型 方法名稱(參數列表);
注意事項:
接口當中的抽象方法,修飾符必須是兩個固定的關鍵字:public abstract 這兩個關鍵字修飾符,可以選擇性省略。 方法的三要素,可以隨意定義
public interface MyInterfaceAbstract { public abstract void methodAbs1 ( ) ; abstract void methodAbs2 ( ) ; public void methodAbs3 ( ) ; void methodAbs4 ( ) ; }
接口的使用步驟
接口不能直接使用,必須有個“實現類”來“實現”該接口 格式: public class 實現類名稱 implements 接口名稱{ //… }
接口的實現類必須覆蓋重寫(實現)接口中所有的抽象方法 實現:去掉abstract關鍵字,加上方法體大括號
創建實現類的對象,進行使用
注意事項: 如果實現類并沒有覆蓋重寫接口中所有的抽象方法,那么這個實現類自己就必須是抽象類
public class Demo { public void main ( String
[ ] args
) { MyInterfaceAbstractImp impl
= new MyInterfaceAbstractImpl ( ) ; impl
. methodAbs1 ( ) ; impl
. methodAbs2 ( ) ; }
}
接口的默認方法,可以通過接口事項類對象,直接調用 接口的默認方法,也可以被接口事項類進行覆蓋重寫
public class Demo { public static void ( String
[ ] args
) { MyInterfaceDefaultA a
= new MyInterfaceDefaultA ( ) ; a
. methodAbs ( ) ; a
. methodDefault ( ) ; MyInterfaceDefaultB b
= new MyInterfaceDefaultB ( ) ; b
. methodAbs ( ) ; b
. methodDefault ( ) ; }
}
接口里允許定義默認方法 格式: public default 返回值類型 方法名稱(參數列表){ 方法體 } 備注:接口當中的默認方法,可以解決接口升級的問題
public interface MyInterfaceDefault { public abstract void methodAbs ( ) ; public default void methodDefault ( ) { System
. out
. println ( “這是新添加的默認方法”
) ;
}
}
接口當中允許定義靜態方法 格式: public static 返回值類型 方法名稱(參數列表){ 方法體 }
提示:就是將abstract或者default換成static即可,帶上方法體
注意事項:不能通過接口實現類的對象來調用接口當中的靜態方法 正確用法:通過接口名稱,直接調用其中的靜態方法
格式: 接口名稱.靜態方法名(參數);
public class Demo { public static void main ( String
[ ] args
) { MyInterfaceStaticImpl impl
= new MyInterfaceStaticImpl ( ) ; MyInterfaceStatic
. methodStatic ( ) ; }
}
接口當中允許定義私有方法
普通私有方法,解決多個默認方法之間重復代碼問題 格式: private 返回值類型 方法名稱(參數列表){ 方法體 }
靜態私有方法,解決多個靜態方法之間的重復代碼問題 格式: private static 返回值類型 方法名稱(參數列表){ 方法體 }
public interface MyInterfacePrivateA { public default void methodfault1 ( ) { System
. out
. println ( “默認方法
1 ”
) ;
methodCommon ( ) ; } public default void methodfault2 ( ) { System
. out
. println ( “默認方法
2 ”
) ;
methodCommon ( ) ; } public default void methodCommon ( ) { System
. out
. println ( “AAA”
) ; System
. out
. println ( “BBB”
) ; System
. out
. println ( “CCC”
) ; }
}
接口當中也可以定義成員變量, 但是必須使用public static final三個關鍵字進行修飾 從效果上看,這其實就是接口的常量 格式: public static final 數據類型 常量名稱 = 數據值 備注 一旦使用final關鍵字進行修飾,說明不可改變
注意事項:
接口當中的常量,可以省略public static final 接口當中的常量,必須進行賦值,不能不賦值 接口中常量的名稱,使用完全大寫的字母,用下劃線進行分隔
public interface MyInterfaceConst { public static final int NUM_OF_MY_CLASS
= 12 ;
}
public class Demo { public static void main ( String
[ ] args
) { System
. out
. println ( MyInterfaceConst
. NUM_OF_MY_CLASS
) ; }
}
繼承父類并實現多個接口 使用接口時,需要注意:
接口是沒有靜態代碼塊或者構造方法的 一個類的直接父類是唯一的,但是一個類可以同時實現多個接口 格式: public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB{ //覆蓋重寫所有的抽象方法 } 如果實現類所實現的多個接口當中,存在重復的抽象方法,那么只需要覆蓋重寫一次即可 如果實現類沒有覆蓋重寫所有接口當中的所有抽象方法,那么實現類就必須是一個抽象類 如果實現類所實現的多個接口當中,存在重復的默認方法,那么實現類一定要對沖突的默認方法進行覆蓋重寫。 一個類如果直接父類當中的方法,和接口當中的默認方法產生了沖突,優先用父類當中的方法。
接口之間的多繼承 1.類與類之間是單繼承的,直接父類只有一個 2.類與接口之間是多實現的,一個類可以實現多個接口 3.接口與接口之間是多繼承的
注意事項: 1.多個父接口當中的抽象方法如果重復,沒關系 2.多個父接口當中的默認方法如果重復,那么子接口必須進行默認方法的覆蓋重寫,而且而且帶著default關鍵字。
創作挑戰賽 新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔 為你收集整理的Java学习笔记_抽象/接口 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。