Java_Day12(接口)

接口

  • 接口的基礎語法:
    1.接口也是一種引用數據類型。
    2.接口是完全抽象的。或者說接口是特殊的抽象類。
    3.定義:
    [修飾符列表] interface 接口名{
    }
    4.接口支持多繼承,一個接口可以繼承多個接口。
    interface C extends A,B{
    }
    5.接口只包含常量(final,static)和抽象方法.
    6.接口中的成員變量都隱含public,static,final屬性,方法隱含public,abstract屬性,可以省略不寫。
    7.接口中的方法都是抽象方法,所以接口中的方法不能有方法體。
    8.接口中的常量定義時一定要賦初值,且此值不能再更改。
    在這裏插入圖片描述
  • 類實現接口
    類和類之間叫做繼承,類和接口之間叫做實現。可以將其理解爲“繼承”。
    繼承使用extends關鍵字。
    實現使用implements關鍵字。
  • 當一個非抽象的類接口的話,需要將接口中所以的方法實現。重寫/覆蓋/實現 接口的方法權限不能降低,所以必須聲明public.
  • 接口的多態
    MyMath a = new MyMathPI//向上轉型,父類型的引用指向子類型的對象,運行時找的是類的類型。
    接口必須通過類實現後才能使用,否則就僅僅是一個框架。
  • 一個類可以同時實現多個接口,比如計算機可以實現多個接口。其實現了多繼承的功能,彌補了Java類單繼承的缺陷。
  • 接口不同類之間沒有‘繼承’關係,向下轉型也編譯不會報錯,運行時會報錯。
  • 繼承和實現都存在的話,代碼該怎麼寫?
    extends在前implements在後。
  • 一個非抽象的類,實現接口的時候,必須將接口中所有方法加以實現。
  • 接口中方法不能有方法體。
  • 接口在開發中用什麼作用?
    接口在開發中的作用,類似於多態在開發中的作用。多態,面向抽象編程,不要面向具體編程,提高程序的擴展力。
    例如寫一個養寵物系統。
    在這裏插入圖片描述
    接口在開發中的作用?
    面向抽象編程:即面向接口編程。可插拔接口。如主板和內存條,usb接口,電腦與鍵盤…。擴展力好。
    在這裏插入圖片描述
//實現顧客到店點餐系統,菜單作爲接口
/*接口的作用*/
public class Test1 {
    public static void main(String[] args) {
        Customer f=new Customer();
        f.setName("jia");
        Menu Cooker1=new ChineseCooker();//多態,向上轉型,創建中國廚師
        f.setCc(Cooker1);
        f.order();
        Menu Cooker2 =new FranchCooker();//創建法國廚師
        f.setCc(Cooker2);
        f.order();
        System.out.println(f.getName());
    }
}
//接口
interface Menu {
    int YuXiang();
    int Pizza();

}
//顧客類
class Customer {
    private  String name;
    private Menu cc;
    //構造方法
    public Customer() {
    }

    public Customer(String name, Menu cc) {
        this.name = name;
        this.cc = cc;
    }
    //封裝
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Menu getCc() {
        return cc;
    }

    public void setCc(Menu cc) {
        this.cc = cc;
    }
    //    點菜方法
    public void order(){
        Menu fm=this.getCc();//獲得菜單
        fm.YuXiang();//廚師做菜
        fm.Pizza();
    }
}
//中國廚師實現菜單的中餐
class ChineseCooker implements Menu{
    public int  YuXiang(){
        System.out.println("Chinese魚香肉絲!");
        return 0;
    }
    public int Pizza(){
        System.out.println("Chinese披薩!");
        return  0;
    }
}
//法國廚師實現菜單中的西餐
class FranchCooker implements Menu{
    public int YuXiang(){
        System.out.println("Franch魚香肉絲!");
        return 0;
    }
    public int Pizza(){
        System.out.println("Franch披薩!");
        return 0;
    }
}


一個java源文件,只能出現一個public類。

  • 類型與類型之間的關係?
    *在這裏插入圖片描述

抽象類和接口有什麼區別?

語法上區別:
抽象類是半抽象的。
接口是完全抽象的。

抽象類中有構造方法
接口中沒有構造方法

接口和接口之間支持多繼承。
類和類直間只能單繼承。

一個類可以同時實現多個接口
一個抽象類只能繼承一個類。

接口只能出現常量和抽象方法。

接口使用的比抽象類多,一般都是對“行爲的抽象”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章