接口是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現(xiàn),因此這些方法可以在不同的地方被不同的類實現(xiàn),而這些實現(xiàn)可以具有不同的行為(功能
接口的定義格式:
interface 接口名{
default void test(){ //默認方法需要default來修飾
System.out.println("hello ");
}
static String staticTest(){ //在接口中定義類方法,需要static來修飾
return "類方法";
}
}
實現(xiàn)接口的格式:
class 類名 implements 接口{
}
接口要注意的細節(jié):
1. 接口其實是一個特殊的類拔妥。
2. 接口中的成員變量都是屬于常量,默認的修飾符 public static final.
3. 接口中的方法都是抽象 的方法达箍, 默認的修飾符: public abstract 没龙。
4. 接口是不能用于創(chuàng)建對象。
5. 接口是沒有構(gòu)造方法的缎玫,因為接口中的變量都是常量硬纤,接口中方法都是抽象 的方法。
6. 一個非抽象類實現(xiàn)一個接口時赃磨,必須實現(xiàn)接口中的所有方法筝家。
//A接口
interface A{
//成員變量
public static final int i =10;
void test();
}
//Demo實現(xiàn)了A接口...
class Demo implements A{
public static void main(String[] args)
{
//A a = new A();
Demo9 d = new Demo9();
d.test();
}
public void test(){
System.out.println("這個接口的test方法...");
}
}
接口和抽象類的異同:
相同:
1.接口和抽象類都不能被實例化,他們都位于繼承樹的頂端,用于被其他類實現(xiàn)和繼承.
2.接口和繼承類都可以包含抽象方法,實現(xiàn)接口或繼承抽象類的普遍子類都必須實現(xiàn)這 些抽象方法.
不同:
1.接口作為系統(tǒng)與外界交互的窗口,接口體現(xiàn)的是一種規(guī)范,對于接口的是閑著而言,接口 規(guī)定了是閑著必須向外提供哪些服務(wù)(以方法的形式來提供);對于接口的調(diào)用者來言,接口規(guī)定了調(diào)用者可以調(diào)用哪些服務(wù)(就是如何調(diào)用方法);抽象類作為系統(tǒng)中多個子類的共同父類,它所體現(xiàn)的是一種模板式設(shè)計,可以被當做系統(tǒng)中實現(xiàn)過程中的中間產(chǎn)品,這個中間產(chǎn)品已經(jīng)實現(xiàn)了系統(tǒng)的部分功能(那些已經(jīng)提供實現(xiàn)的方法),但這個產(chǎn)品依然不能成為最終的產(chǎn)品,必須更進一步的完善.
2.接口里只能包含抽象方法和默認方法,不能為普通方法提供實現(xiàn)方法,抽象類則完全可以包含普通方法.
3.接口里不能定義靜態(tài)方法,抽象類可以定義靜態(tài)方法.
4.接口里只能定義靜態(tài)常量,不能定義普通成員變量;抽象類既可以定義普通成員變量,也可以定義靜態(tài)成員變量.
5.抽象類里包含構(gòu)造器,抽象類里的構(gòu)造器并不是用于創(chuàng)建對象,而是讓子類調(diào)用這些構(gòu)造器來完成屬于抽象類的初始化操作.
6.接口里不能包含初始化塊,但抽象類則完全可以包含初始化塊.