課程6.4之接口的基本語(yǔ)法與應(yīng)用(重要)


轉(zhuǎn)發(fā)請(qǐng)注明出處:
安卓猴的博客(http://sunjiajia.com)


本節(jié)課程將學(xué)習(xí)以下內(nèi)容:

  • 什么是接口
  • 接口的基本語(yǔ)法
  • 為什么要使用接口
  • 工廠方法模式

什么是接口

含義:

Java接口是一系列方法的聲明宽气,一個(gè)接口只有方法的特征沒(méi)有方法的實(shí)現(xiàn)屏积,因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能)牙言。

接口的基本語(yǔ)法

  • 使用interface定義气筋;
  • 接口當(dāng)中的方法都是抽象方法(不用寫abstract)薯嗤;
  • 接口當(dāng)中的方法都是public權(quán)限(不用寫public)绰寞;
  • 實(shí)現(xiàn)接口使用implements關(guān)鍵字;
  • 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口泉手;
  • 一個(gè)接口可以繼承多個(gè)接口黔寇;

注意:

  • 不能生成對(duì)象;
  • 用一個(gè)類來(lái)實(shí)現(xiàn)(關(guān)鍵字是implements)接口使用它斩萌;
  • 復(fù)寫接口中的抽象方法實(shí)現(xiàn)相應(yīng)的功能缝裤。

例子1:(請(qǐng)動(dòng)手)

1.新建一個(gè)名為USB.java的源文件:

interface USB{
  // 它們是public權(quán)限的抽象函數(shù)
  void read();
  void write();
}

2.新建一個(gè)名為WIFI.java的源文件:

interface WIFI{
  // 它們是public權(quán)限的抽象函數(shù)
  void open();
  void close();
}

3.新建一個(gè)名為USBPhone.java的源文件:

class USBPhone implements USB,WIFI{
  void read(){
    System.out.println("USBPhone read!");
  }

  void write(){
    System.out.println("USBPhone write!");
  }

  void open(){
    System.out.println("WIFI open!");
  }

  void open(){
    System.out.println("WIFI close!");
  }
}

4.新建一個(gè)名為Demo01.java的源文件:

class Demo01{
  public static void main(String[] args) {

    USBPhone phone = new USBPhone();

    // 向上轉(zhuǎn)型
    USB usb = phone;
    WIFI wifi = phone;

    usb.read();
    usb.write();

    wifi.open();
    wifi.close();
  }
}

為什么要使用接口

工廠方法模式

  • 請(qǐng)反復(fù)練習(xí)下面的例子2,在代碼中深刻理解為什么要使用接口工廠方法模式颊郎。

例子2:(請(qǐng)動(dòng)手)

1.新建一個(gè)名為Printer.java的源文件:

interface Printer{
  void open();
  void close();
  void print(String s);
}

2.新建一個(gè)名為HPPrinter.java的源文件:

class HPPrinter implements Printer{
  void open(){
    System.out.println("HP open");
  }
  void close(){
    System.out.println("HP close");
  }
  void print(String s){
    System.out.println("HP print-->" + s);
  }
}

3.新建一個(gè)名為CanonPrinter.java的源文件:

class CanonPrinter implements Printer{
  private void clean(){
    System.out.println("Canon clean");  
  }
  void open(){
    System.out.println("Canon open");
  }
  void close(){
    System.out.println("Canon close");
  }
  void print(String s){
    System.out.println("Canon print-->" + s);
  }
}

4.新建一個(gè)名為Demo02.java的源文件:

class Demo02{
  public static void main(String[] args) {
    Printer printer = null;
    // 用flag來(lái)模擬用戶選擇打印機(jī)姆吭。
    int flag = 0;
    if (flag == 0) {
      printer = new HPPrinter();
    } else if (flag == 1) {
      printer = new CanonPrinter();
    }

    printer.open();
    printer.print("abcdefghijklmn");
    printer.close();

  }
}

5.新建一個(gè)名為PrinterFactory.java的源文件:

class PrinterFactory{
  public static Printer getPrinter(int flag){
    Printer printer = null;
    // 用flag來(lái)模擬用戶選擇打印機(jī)榛做。
    if (flag == 0) {
      printer = new HPPrinter();
    } else if (flag == 1) {
      printer = new CanonPrinter();
    }
    return printer;
  }
}

6.新建一個(gè)名為Demo03.java的源文件:

class Demo03{
  public static void main(String[] args) {
    int flag = 0;
    Printer printer = PrinterFactory.getPrinter(flag);
    printer.open();
    printer.print("abcdefghijklmn");
    printer.close();
  }
}
  • 請(qǐng)注意4、5猾编、6不同寫法的意義瘤睹。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市答倡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驴党,老刑警劉巖瘪撇,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡倔既,警方通過(guò)查閱死者的電腦和手機(jī)恕曲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渤涌,“玉大人佩谣,你說(shuō)我怎么就攤上這事∈蹬睿” “怎么了茸俭?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)安皱。 經(jīng)常有香客問(wèn)我调鬓,道長(zhǎng),這世上最難降的妖魔是什么酌伊? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任腾窝,我火速辦了婚禮,結(jié)果婚禮上居砖,老公的妹妹穿的比我還像新娘虹脯。我一直安慰自己,他們只是感情好奏候,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布归形。 她就那樣靜靜地躺著,像睡著了一般鼻由。 火紅的嫁衣襯著肌膚如雪暇榴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天蕉世,我揣著相機(jī)與錄音蔼紧,去河邊找鬼。 笑死狠轻,一個(gè)胖子當(dāng)著我的面吹牛奸例,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播向楼,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼查吊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了湖蜕?” 一聲冷哼從身側(cè)響起逻卖,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎昭抒,沒(méi)想到半個(gè)月后评也,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炼杖,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年盗迟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坤邪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡罚缕,死狀恐怖艇纺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情邮弹,我是刑警寧澤黔衡,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站肠鲫,受9級(jí)特大地震影響员帮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜导饲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一捞高、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渣锦,春花似錦硝岗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至听盖,卻和暖如春胀溺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背皆看。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工仓坞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腰吟。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓无埃,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親毛雇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嫉称,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法灵疮,內(nèi)部類的語(yǔ)法织阅,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法始藕,線程的語(yǔ)...
    子非魚_t_閱讀 31,623評(píng)論 18 399
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,077評(píng)論 25 707
  • 今天用了最無(wú)理取鬧的消極反應(yīng)蒲稳,早上不起床氮趋,睡到了八點(diǎn)伍派,還是因?yàn)橐粋€(gè)烏龍才起來(lái)江耀。上了一節(jié)體育課。中午從一點(diǎn)睡到了四點(diǎn)...
    酸酸酸酸酸奶閱讀 164評(píng)論 0 0
  • 無(wú)奈.................................................
    豌豆粒閱讀 301評(píng)論 0 0
  • 期中考試結(jié)束诉植,今天學(xué)校組織開家長(zhǎng)會(huì)祥国,家長(zhǎng)們?cè)缭鐏?lái)到教室,無(wú)一缺席晾腔,積極性很高舌稀!找到孩子的座位,首先看到了寶貝的...
    孫嘉潤(rùn)媽媽閱讀 184評(píng)論 0 0