java---OOP之接口

1 接口

1.1 概念:

  • Java裏面由於不允許多重繼承,所以如果要實現多個類的功能,則可以通過實現多個接口來實現。
  • Java接口和Java抽象類代表的就是抽象類型, 就是我們需要提出的抽象層的具體表現。
  • OOP面向對象的編程,如果要提高程序的複用率,增加程序的可維護性,可擴展性,就必須是面向接口的編程,面向抽象的編程。
  • 正確地使用接口、抽象類這些太有用的抽象類型做爲java結構層次上的頂層。
  • interface 接口名{ 代碼… }

1.2 特點:

  • 接口中都是抽象方法
  • 通過interface關鍵字創建接口
  • 通過implements讓子類來實現
  • 可以理解成,接口是一個特殊的抽象類
  • 接口突破了java的單繼承的侷限性
  • 接口和類之間可以多實現,接口和接口之間可以多繼承
  • 接口是對外暴露的規則,是一套開發規範
  • 接口提高了程序的功能擴展,降低了耦合性!! 繼承的耦合性很強!!
public class Test1_Interface {
    public static void main(String[] args) {
       //TODO  創建多態對象測試
    }
}

//接口可以看做是程序的一套規範規則
//通過interface關鍵字定義接口
interface Inter{
    //接口裏可以有普通方法嗎??--- 不可以,都是抽象方法
    abstract public void save() ;
    abstract public void delete() ;
}

//接口的實現類  和 接口之間是  implements實現的關係
//實現類實現了接口後,有兩條路可以選:是一個抽象的實現類   +  重寫接口中的所有抽象方法
//abstract class InterImpl implements  Inter {
class InterImpl implements  Inter {
    @Override
    public void save() {
       System.out.println("正在保存您的數據...");
    }
    @Override
    public void delete() {
       System.out.println("正在刪除您的數據...");
    }
}

2 接口的用法

2.1 構造方法:

  • 接口裏是沒有構造方法的。
  • 在創建實現類的對象時默認的super(),是調用的默認Object的無參構造。
//創建接口
interface Inter2{
   //1、接口裏可以有構造方法嗎?   ---  不能!!
//  public Inter2() {}   
}

2.2 成員變量:

  • 接口裏沒有成員變量,都是常量。所以,你定義一個變量沒有寫修飾符時,默認會加上:public static final

2.3 成員方法:

  • 接口裏的方法,默認就都是抽象的,如果你不寫明是abstract的,那會自動補齊。

2.4 複雜用法:

  • Java中單繼承的侷限性通過接口可以解決。
  • 接口可以多繼承也可以多實現,甚至可以繼承的同時多實現。
public class Test4_ComInter {
    public static void main(String[] args) {
       Interface1 in = new Interface1Impl();
       in.save();
       in.update();
    }
}

//創建接口1
interface Interface1{
    void save();
    void update();
}

//創建接口2
interface Interface2{
    void get();
    void delete();
}

//打破了java單繼承的侷限性,因爲接口之間可以多繼承,多個接口之間逗號隔開
interface Interface3 extends Interface1,Interface2{
    void add();
}

//接口還可以多實現嗎??---可以多實現,只不過接口之間逗號隔開
class ManyImpl implements  Interface1,Interface2{
    public void save() {}
    public void update() {}
    public void get() {}
    public void delete() {}
}

//接口可以繼承的同時,多實現?? -- 
class MoreImple extends ManyImpl  implements Interface1,Interface2  {
}

//創建實現類,使用3號接口的功能,需要重寫幾個方法呢??---同時重寫1號和2號和3號接口裏的所有功能
class Interface3Impl  implements Interface3{
    @Override
    public void save() {  }
    @Override
    public void update() {  }
    @Override
    public void get() {  }
    @Override
    public void delete() {   }
    @Override
    public void add() {  }
}

//創建實現類
class Interface1Impl implements Interface1{
    @Override
    public void save() {
       System.out.println("save()...");
    }
    @Override
    public void update() {
      System.out.println("update()...");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章