網(wǎng)站建設(shè)51jyoo360建網(wǎng)站
文章目錄
- 一、概念
- 二、格式
- 1.使用interface來定義接口
- 2.implements實現(xiàn)接口
- 三、接口中的成員
- 1.常用成員
- 2.新增成員(不重要)
- 2.1 默認方法
- 2.2 靜態(tài)方法
- 2.3 私有方法
- 四、繼承關(guān)系 & 實現(xiàn)關(guān)系
- 五、抽象類和接口的使用區(qū)別
一、概念
接口就是規(guī)范\規(guī)則,我們可以使用接口來定義一些規(guī)則
(比如要求某個方法的方法名必須叫什么,方法的參數(shù)列表必須是什么,方法的返回值類型必須是什么)
二、格式
1.使用interface來定義接口
public interface 接口名{//定義抽象方法。public abstract被省略了void method();
}
2.implements實現(xiàn)接口
果要實現(xiàn)多個接口,多個接口名用逗號分開。我們在理解的時候可以把接口理解成是一個特殊的父類。
public class 類名 implements 接口名{}
三、接口中的成員
1.常用成員
在jdk7版本中接口中只能有常量和抽象方法。
- 接口中定義不了成員變量,定義的成員變量默認都會修飾為:public static final
- 定義的方法默認修飾符為public abstract**
public interface InterfaceA {//常量int NUM =10;//等價于public static final int NUM =10;//抽象方法void method();//等價于 public abstract void method();
}
2.新增成員(不重要)
默認方法、靜態(tài)方法、私有方法
2.1 默認方法
- 在jdk8中允許我們在接口中定義默認方法。默認方法允許有方法體。
- 默認方法可以選擇不進行重寫。也可以重寫,看需要。
- 注意事項:如果兩個接口中有相同的默認方法。一個類同時實現(xiàn)了這兩個接口,必須要重寫該方法。
- 應(yīng)用場景:如果在接口升級的時候某些方法并不想讓所有的實現(xiàn)類進行重寫,可以使用默認方法來定義。
public interface InterfaceA {//默認方法:使用defaut關(guān)鍵字進行修飾。default void method(){}
}
2.2 靜態(tài)方法
- 在jdk8中允許我們在接口中定義靜態(tài)方法。靜態(tài)方法允許有方法體。
- 靜態(tài)方法不能被重寫。
- 應(yīng)用場景:如果在接口升級的時候需要給接口增加一些工具方法。不想讓實現(xiàn)類去重寫該方法,可以使用靜態(tài)方法來定義。
public interface InterfaceA {//靜態(tài)方法:使用static關(guān)鍵字進行修飾。static void staticMethod(){}
}public class Demo {public static void main(String[] args) {//使用接口名.方法名(參數(shù)) 來調(diào)用InterfaceA.staticMethod();}
}
2.3 私有方法
- 在jdk9中允許我們在接口中定義私有方法。私有方法允許有方法體。
- 私有方法不可以被重寫。
- 應(yīng)用場景:對默認方法或者是靜態(tài)方法中重復(fù)的代碼進行抽取,提高代碼復(fù)用度。
public interface InterfaceA {
// 使用private修飾
//加上static的原因:靜態(tài)方法只能調(diào)用靜態(tài)方法,如果是靜態(tài)方法調(diào)用就要在此方法中加上staticprivate static void privateStaticMethod(){}private void privateMethod(){}
}
四、繼承關(guān)系 & 實現(xiàn)關(guān)系
- 在java中一個類可以實現(xiàn)多個接口
public class Person implements InterfaceA,InterfaceB{}
- 在java中接口和接口之間可以有繼承關(guān)系。繼承之后實現(xiàn)類會把父接口的成員繼承下來。
public interface InterfaceC extends InterfaceA{}
五、抽象類和接口的使用區(qū)別
- 接口中的基本都是抽象的,而在抽象類中可以有一部分是非抽象方法。而非抽象類中是不可以有抽象方法的。
- 接口是最抽象的,其次是抽象類,最后是非抽象類。?
- 所以我們最頂層設(shè)計成接口,然后實現(xiàn)類設(shè)計成抽象類(實現(xiàn)部分抽象方法),抽象類的子類可以設(shè)計成非抽象類(對剩下的所有抽象方法進行實現(xiàn))。