日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字

發布時間:2025/3/15 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接口:

接口是Java語言中一種引用類型,是方法的集合,如果說類的內部封裝了成員變量、構造方法和成員方法,那么

接口的內部主要就是封裝了方法,包含抽象方法(JDK 7及以前),默認方法和靜態方法(JDK 8),私有方法

(JDK 9)。

接口的定義:
它與定義類方式相似,但是使用 interface 關鍵字。它也會被編譯成.class文件,但一定要明確它并

不是類,而是另外一種引用數據類型,它是多個類的公共規范。它不能創建對象,但是可以被實現類實現其功能。

java中引用數據類型有:
數組,類,接口。

實現:
類與接口的關系為實現關系,即類實現接口,該類可以稱為接口的實現類,也可以稱為接口的子類。實現的動作類似繼承,格式相仿,只是關鍵字不同,實現使用 implements 關鍵字。

接口的多實現:
在繼承中,一個類只能繼承一個父類。而對于接口而言,一個類是可以實現多個接口的,這叫做接口的多實現。并且,一個類能繼承一個父類,同時實現多個接口,接口的多實現格式為:

class 類名 [extends 父類名] implements 接口名1,接口名2,接口名3... {//這里的繼承可選// 重寫接口中抽象方法【必須】// 重寫接口中默認方法【不重名時可選】 }

優先級的問題:
當一個類,既繼承一個父類,又實現若干個接口時,父類中的成員方法與接口中的默認方法重名,子類就近選擇執行父類的成員方法,父類優先于接口。

接口中抽象方法:
抽象方法:使用 abstract 關鍵字修飾,可以省略,沒有方法體,該方法供子類實現使用。

// 1.定義接口的格式和定義類的格式相似,只是將關鍵字class換為interface即可: // 接口源碼文件還是.java文件,編譯后還是.class文件,這點需要注意。 public interface InterFace{// 2,接口中可以定義不同的數據類型,java 9 中允許可以定義的內容有:常量、抽象方法、默認方法、靜態方法、私有方法;java 8中允許可以定義的內容有:常量、抽象方法、默認方法、靜態方法public abstract void say();//3.注意:接口中的抽象方法,修飾符必須是public abstract為固定寫法,這里可以選擇性的省略它們,但是不能更換為其它修飾關鍵字。// 接口的使用步驟,3-5:// 3.接口不能直接使用(自己使用自己),必須有一個實現類(類似繼承中子類)來使用此接口,其格式為:public class 實現類的名稱 implements 接口名稱{}// 4.接口的實現類必須覆蓋重寫接口中所用的抽象方法// 5,創建實現類的實例對象,使用接口。 } // 6.定義一個實現類UseInterface: public class UseInterface implements InterFace{// 7.將接口中所有抽象方法覆蓋重寫,如果有落下抽象方法沒有覆蓋重寫,那么自己就是抽象類了@Overridepublic void say(){// 8.自定義方法體:System.out.println("實現類中的say方法被調用了");}; } // 9.實例化一個實現類的對象: public class UseInterfaceObj{public static void main(String[] args){// 不能直接通過接口實例化對象,必須通過實現類來創建對象:// InterFace interface = new Interface();//報錯,直接使用接口創建對象會報錯UseInterface interfaceObj1 = new UseInterface();// 10.使用接口中的抽象方法:interfaceObj1.say();//實現類中的say方法被調用了} }

接口中默認方法:
默認方法:使用 default 關鍵字修飾,不可省略,供子類調用或者子類重寫。

// 1.java 8開始,接口中可以定義默認方法,其格式為:public default 返回值類型 方法名稱(參數列表){方法體},接口中的默認方法可以解決接口升級問題。 public interface InterfaceDefault{// 定義一個抽象方法:public abstract void methodAbstract();// 4.新增一個抽象方法(將這個抽象方法修改為默認方法后,實現類將不再報錯,),新增抽象方法后,之前的實現類會報錯,因為實現類中要覆蓋重寫所有接口中的抽象方法;新增抽象方法后,實現類中沒有覆蓋重寫新增的抽象方法,因此會報錯。// public abstract void methodAbstract2();public default void methodDefault(){//默認方法需要將關鍵字abstract修改為default且public可省略,默認方法會被實現類繼承下去。System.out.println("接口中默認發方法被調用了,但是實現類中并沒有定義此方法,默認方法是可以繼承的");};// 總結:接口的默認方法可以被實現類對象直接調用,接口的默認方法也可以被實現類覆蓋重寫,當覆蓋重寫后, } // 2.定義一個InterfaceDefault接口的實現類:UseInterfaceDefaultA: public class UseInterfaceDefaultA implements InterfaceDefault{// 覆蓋重寫抽象方法@Overridepublic void methodAbstract(){System.out.println("實現類A:實現了抽象方法");} } // 3.定義一個InterfaceDefault接口的實現類:UseInterfaceDefaultB: public class UseInterfaceDefaultB implements InterfaceDefault{// 覆蓋重寫抽象方法@Overridepublic void methodAbstract(){System.out.println("實現類B:實現了抽象方法");} // 8.實現類覆蓋重寫接口中的默認方法:@Overridepublic void methodDefault(){// 實現類中覆蓋重寫接口中默認方法后,實現類的對象將調用覆蓋重寫后的方法System.out.println("接口中的默認方法被實現類覆蓋重寫了,并調用了重寫后的方法");} } // 5.實例化實現類的對象: public class UseInterfaceDefaultObj{public static void main(String[] args){UseInterfaceDefaultA objA = new UseInterfaceDefaultA(); //6.調用抽象方法,實際調用的是實現類中的方法objA.methodAbstract();//實現類A:實現了抽象方法// 7.調用接口中的默認方法:objA.methodDefault();//接口中默認發方法被調用了,但是實現類中并沒有定義此方法,默認方法是可以繼承的UseInterfaceDefaultB objB = new UseInterfaceDefaultB(); objB.methodAbstract();//實現類B:實現了抽象方法objB.methodDefault();//接口中的默認方法被實現類覆蓋重寫了,并調用了重寫后的方法//當接口中默認的方法被實現類覆蓋重寫后,接口中的默認方法將不再被調用,而是通過被覆蓋重寫的實現類中的方法代替} }

接口中靜態方法:
靜態方法:使用 static 關鍵字修飾,供接口直接調用。

public interface InterfaceStatic{// 1.java 8 中允許定義靜態方法,其格式為:public static 返回值類型 方法名(){方法體},需要注意的是關鍵字是static和需要寫方法體,如:public static void methodStatic(){System.out.println("接口中的靜態方法執行了");}// 注意:接口中的靜態方法不能直接通過實現類的對象來調用,其正確調用格式為:接口名.靜態方法,也就是說,使用接口中的靜態方法沒必要創建實現類對象,同樣適用非接口中靜態方法。 } // 2.定義一個接口的實現類(用于測試靜態方法是否可以通過實現類對象調用,實際是無需實現類對象的): public class InterfaceStaticClass implements InterfaceStatic{// 這里沒有可覆蓋重寫的抽象方法,無需進行覆蓋重寫。 } // 3.實例化一個實現類的對象: public class InterfaceStaticClassObj{public static void main(String[] args){InterfaceStaticClass interfaceStaticMethodObj = new InterfaceStaticClass(); // interfaceStaticMethodObj.methodStatic();//報錯,接口中的靜態方法不能直接通過實現類對象調用,應通過接口名稱.靜態方法的格式調用,如:InterfaceStatic.methodStatic();//接口中的靜態方法執行了} }

接口中私有方法:
私有方法:使用 private 關鍵字修飾,供接口中的默認方法或者靜態方法調用。

// 1.當接口中有大量重復代碼需要抽離出來放到一個方法中時,并且僅想讓接口中的方法可以訪問到被抽離出來內容的方法,而實現類無法訪問此方法,此時可以使用私有方法封裝抽離內容,而私有方法是不可以被實現類訪問到的。 // 2.私有方法分普通私有方法和靜態私有方法,其定義格式分別如下: // 普通私有方法:private 返回值類型 方法名(參數){方法體} // 靜態私有方法:private static 返回值類型 方法名(參數){方法體} public interface InterfacePrivateMethod{public default void method1(){System.out.println("接口中方法1執行了");commonMethod();}public default void method2(){System.out.println("接口中方法2執行了");commonMethod();}// 3.定義一個私有方法(里面可以裝抽離出上面兩個方法都需要的內容):private void commonMethod(){System.out.println("封裝了公共代碼的方法被執行了");} } // 4.定義一個接口的實現類: public class InterfacePrivateMethodClass implements InterfacePrivateMethod{public void mes(){// commonMethod();//報錯:在實現類中使用接口的私有方法會報錯,實現類中可以訪問接口中普通方法,如:method2();} }; // 5.實例化一個對象對以上進行測試: public class InterfacePrivateMethodClassObj{public static void main(String[] args){InterfacePrivateMethodClass InterPrivatMethod = new InterfacePrivateMethodClass();InterPrivatMethod.mes();//接口中方法2執行了// 封裝了公共代碼的方法被執行了// 可以看到私有方法在接口中執行了,無法在實現類中執行且報錯了} }

接口中的常量:
接口中,無法定義成員變量,但是可以定義常量;接口中,沒有靜態代碼塊。

// 定義一個接口: public interface InterfaceConst{// 1.接口中也可以定義“成員變量”,但是必須使用public static final這三個關鍵字修飾(三個關鍵字可任意省略,但是其意義和沒省略一樣),其實是不可以變的變量,可以認為是常量;其定義格式:public static final 數據類型 常量名 = 值;final關鍵字表示不可變。public static final int NUM_SIX = 6;//一旦賦值,將不能被修改,通過接口名稱.常量名可訪問到常量的值// 注意:接口中的常量聲明后必須賦值,否則會報錯;常量名推薦使用完全大寫英文字母且使用下劃線分割 } // 2.定義一個類,訪問接口中的常量: public class InterfaceConstObj{public static void main(String[] args){System.out.println(InterfaceConst.NUM_SIX);//6} }

提示:本文圖片等素材來源于網絡,若有侵權,請發郵件至郵箱:810665436@qq.com聯系筆者刪除。
筆者:苦海

總結

以上是生活随笔為你收集整理的Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。