接口當一個抽象類中的方法 全都是抽象方法的時候 這時可以将該抽象類
用另一種形式定義和表示 就是 interface接口
接口内除了抽象方法之外 還有全局常量
接口常見成員 這些成員均有固定修飾符
1 抽象方法 public static final
2 全局常量 public abstract
接口中成員都是公共的權限
定義接口的關鍵字不是class 是interface
interface Demo{
public static final int NUM = 4;
abstract void show();
abstract void show2();
}
class DemImp implements Demo{
public void show()
{
}
public void show2()
{
}
}
public class InterfaceDemp {
public static void main(String[] args) {
//三個輸出都對 static 常量當然可以直接調用
DemImp d = new DemImp();
System.out.println(d.NUM);
System.out.println(DemImp.NUM);
System.out.println(Demo.NUM);
}
}
接口就應該去實作implements
繼承可以拿一些我隻需要的 但實作是你有的我全部都要拿過來
類與類之間是繼承關系 類與接口之間是實作關系
多接口
java中不直接支援多繼承 因為會出現調用的不确定性
是以java将多繼承進行改良 在java中變成了多實作
一個類可以實作多個接口
接口細節
一個類在繼承另一個類的同時 還可以實作多個接口
class Test2 extends Q implements A,Z
{
}
接口出現避免了單繼承的局限性 但接口擴充了功能讓其變得更強大
接口與接口之間是繼承關系 而且接口可以多繼承
interface QQ extends CC,MM {
}
接口特點
對外暴露的規則
接口是程式的功能擴充
接口的出現降低耦合性
接口可以用來多實作接口中的任何域自動式final和static的、
接口是實作多重繼承的途徑 而生成遵循某個接口的對象的典型方式就是工廠方法設計模式
與直接調用構造器不同 我們在工廠對象上調用的是建立方法 而該工廠對象将生成接口的某個實作的對象
工廠模式 主要用來執行個體化有共同接口的類 可以動态決定應該執行個體化哪一個類
public interface Product{}
//實作了産品接口的産品類
public class Washer implements Product{
public Washer(){
System.out.println("洗衣機被制造了");
}
}
public class Icebox implements Product{
public Icebox(){
System.out.println("冰箱被制造了");
}
}
public class AirCondition implements Product{
public Icebox(){
System.out.println("空調被制造了");
}
}
//工廠類
public interface Factory(){
public Product create();//建立方法
}
//工廠方法核心 具體差個内建産品對象的具體工廠類
//建立洗衣機的工廠
public class CreateWasher implements Factory{
public Product create(){
return new Washer();
}
}
//建立冰箱的工廠
public class CreateIcebox implements Factory{
public Product create(){
return new Icebox();
}
}
//建立空調的工廠
public class CreateAirCondition implements Factory{
public Product create(){
return new AirCondition();
}
}
public class Business(){
public static void produceProduct(Factory factory){
Product p = factory.create();
}
public static void main(String[] args){
produceProduct(CreateWasher);
produceProduct(CreateIcebox);
}
}
工廠方法則把不同的産品放在實作了工廠接口的不同工廠類裡面,這樣就算其中一個工廠類出了問題,其他工廠類也能正常工作,
互相不受影響,以後增加新産品,也隻需要新增一個實作工廠接口工廠類,就能達到,不用修改已有的代碼。