程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java語言入門教程(十六):Java語言中的接口

Java語言入門教程(十六):Java語言中的接口

編輯:關於JAVA

通過前面幾篇文章的學習,初學者可以初步掌握Java語言中繼承的概念和使 用方法,對抽象類的使用也有一定的理解。值得注意的是,Java中類與類的繼承 是單繼承,也就是一個子類最多同時可以繼承一個父類。那麼讓我們看下面的例 子。

假設我們要開發一個游戲系統,而游戲系統中有三種飛行器:飛機、小鳥、 蜘蛛俠。這三種飛行器都需要實現起飛,飛行,降落的邏輯,但是實現方法各不 相同。那麼這三個類應該有一個抽象類作為父類,規范共同行為。

package com.csst.inter;
public abstract class Flyer {
    public abstract void takeoff();
    public abstract void fly();
    public abstract void land();
}
package com.csst.inter;
public class SpiderMan extends Flyer {
    @Override
    public void fly() {
       // TODO Auto-generated method stub
    }
    @Override
    public void land() {
       // TODO Auto-generated method stub
    }
    @Override
    public void takeoff() {
       // TODO Auto-generated method stub
    }
}
// Plane,Bird省略

讓我們仔細看Flyer這個抽象類,它的特點是沒有具體方法,所有方法都是抽 象方法,而且沒有變量。而如果這時,SpiderMan類需要繼承另外一個父類,就 做不到了,因為Java語言中的繼承是單繼承的。而如果SpiderMan不繼承Flyer類 也不可以,因為所有飛行器都用Flyer類型來規范。正為了解決Java中單繼承的 問題,Java中有了接口的概念。我們可以如下修改上面代碼:

package com.csst.inter;
public interface Flyer {
    public  void takeoff();
    public  void fly();
    public  void land();
}
package com.csst.inter;
public class SpiderMan implements Flyer {
    public void fly() {
        // TODO Auto-generated method stub
    }
    public void land() {
       // TODO Auto-generated method stub
    }
    public void takeoff() {
       // TODO Auto-generated method stub
    }
}

如果有一個父類SuperMan,SpiderMan可以同時繼承,如下:

package com.csst.inter;
public class SpiderMan extends SuperMan implements Flyer {
    public void fly() {
       // TODO Auto-generated method stub
    }
    public void land() {
       // TODO Auto-generated method stub
    }
    public void takeoff() {
       // TODO Auto-generated method stub
    }
}

可以說,接口就是一種特殊的抽象類,特殊就特殊在於所有方法都是抽象方 法,而且沒有變量。在Java中,一個類可以同時實現多個接口,也可以繼承類和 實現接口同時存在,如SpiderMan類所示。類實現接口後,需要覆蓋接口中的抽 象方法,否則該類必須聲明為抽象類。

接口和接口之間也可以繼承,且一個接口可以繼承多個接口,因為接口中的 方法都是抽象的。如下:

interface  A{
       //TBD
}
interface  B{
       //TBD
}
interface C extends A,B{
//TBD
}

所以,所謂的單繼承,是指類與類之間的繼承,而接口與接口的繼承,是一 對多的,類實現接口,也是一對多的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved