服裝市場調網(wǎng)站建設的目的長春網(wǎng)站優(yōu)化體驗
基本介紹
接口給出一些沒有實現(xiàn)的方法,封裝到一起,到某個類使用時再根據(jù)具體情況把這些方法寫出來。
注意:在jdk7之前,接口里所有的方法都是抽象方法。在jdk8之后接口中可以有靜態(tài)方法,默認方法
interface 接口名{//屬性//方法
}class 類名 implements 接口{//自己的屬性//自己的方法//必須實現(xiàn)的接口的抽象方法
}
例子
public interface AInterface{//屬性int a=10;//方法(抽象方法)void b();//jdk8之后接口中可以有默認方法default public void c(){System.out.println("hello");}//jdk8之后接口中可以有靜態(tài)方法public static void d(){System.out.println("hi");}
}
深入討論
//項目經(jīng)理寫的
public interface DBInterface{void connect();void close();
}
//A程序員連接mysql
public class MysqlDB implements DBInterface{@overridepublic void connect(){System.out.println("連接mysql");}public void close(){System.out.println("關閉mysql");}
}
//B程序員連接Oracle
public class Oracle implements DBInterface{@overridepublic void connect(){System.out.println("連接Oracle");}public void close(){System.out.println("關閉Oracle");}
}
//運行數(shù)據(jù)庫
public class InterfaceTest {public static void main(String[] args) {MysqlDB mysqlDB = new MysqlDB();//調用方法InterfaceTest interfacetest= new InterfaceTest();interfacetest.work(mysqlDB);}public static void work(DBInterface db){db.connect();db.close();}
}
運行結果
使用細節(jié)
1、接口中所有的方法都是publoc, 默認使用public abstract修飾方法
void a();
//實際上是
public abstract void a();
2、一個普通類實現(xiàn)接口就必須將該接口中的所有方法都實現(xiàn),可以使用alt+enter
3、抽象類實現(xiàn)接口,可以不用實現(xiàn)接口中的方法。
4、一個類可以實現(xiàn)多個接口
class Pig implements A,B{... ...
}
5、接口中所有的屬性都是public, 默認使用public static final修飾屬性,且必須初始化
int a=1;
//實際上是
public static final a=1;
6、接口不能繼承類,但是可以繼承多個其他接口。
interface A extends B,C{}
7、接口的修飾符只能是public和默認,這點和類的修飾符是一樣的
接口VS繼承
1、接口和繼承解決的問題不同
繼承的價值主要在于:解決代碼的復用性和可維護性。
接口的價值主要在于:設計,設計好各種規(guī)范(方法),讓其它類去實現(xiàn)這當方法。
2、接口比繼承更加靈活
接口比繼承更加靈活。繼承是滿足is - a的關系,而接口只需滿足like - a的關系。
3、接口在一定程度上實現(xiàn)代碼解耦