溫習Java筆記(7):介面interface小記

來源:互聯網
上載者:User

    對介面interface我已經仰慕已久,直到今天我才有機會去全面瞭解它,造化弄人,說來始終是自己的錯。
    Java不支援多繼承,但它通過另外一種機制實現了類的繼承。那就是介面interface。介面的屬性都是靜態常量,方法都是抽象方法,即沒有給出方法體定義。介面只相當於程式開發的一組協議,凡是需要實現這種特定功能的類,都可以繼承這些屬性和方法的集合。
    這樣的介面相當於一個完全沒有實現的類,但它的屬性和方法被某個類繼承時與類之間的繼承是不同的,某個類繼承一個介面實際上是實現被繼承的介面中的抽象方法(編寫方法體,滿足該類的某種特定功能),因此它通過implements來繼承一個介面,統稱實現介面。

    1.定義介面
    介面是java的一種複合資料型別,是像類的一種結構,可看作一種沒有實現的類,用關鍵字interface定義介面,檔案名稱儲存為介面名.java。
    [public]interface介面名稱[extends 父介面名列表]
    {
     //靜態常量
     [public][static][final]資料類型 變數名=常量值;
     //抽象方法
     [public][abstract][native]傳回值類型 方法名(參數列表);
    }
    介面中定義的變數均為公有的、靜態、最終的常量,方法也是抽象的和公用的。

    2.實現介面
    [修飾符]class類名[extends 父類名][implements 介面A,介面B,...]
    {
     類的成員變數和成員方法;
     為介面A中的所有方法編寫方法體,實現介面A;
     為介面B中的所有方法編寫方法體,實現介面B;
    }
    一個類實現介面後,將繼承介面中的所有靜態常量,為該類所用。
    一個類實現介面後,如果該類不是一個抽象類別,則該類的類體中必須為介面中的所有抽象方法編寫方法體,因為抽象方法不能存在於非抽象類別中。從而達到繼承和實現介面的目的。
    如果實現介面的類是個抽象類別,則介面中的抽象方法可以不被實現。

    3.定義介面和實現介面舉例
    定義介面AreaInterface,其中有靜態常量pai和求面積的抽象方法area()

//定義介面:AreaInterface.java
public interface AreaInterface
...{
 double pai = Math.PI;
 double area =();
}

//類Circle實現了AreaInterface介面:Circle.java
public class Circle implements AreaInterface
...{
 double r;
 public Circle(double x)
 ...{
  r=x;
 }
 public double area() //實現介面中的抽象方法,求圓面積
 ...{
  return pai * r * r ;
 }
 public String toString()
 ...{
  retunrn "圓:r=" + r + " area=" + area(); 
 }

}
//類Rectangle實現了AreaInterface介面:Rectangle.java
public class Rectangle implements AreaInterface
...{
 double x,y;
 public Rectangle(double x,double b)
 ...{
  x=a;y=b;
 }
 public double area() //實現介面中的抽象方法,求圓面積
 ...{
  return x * y ;
 }
 public String toString()
 ...{
  retunrn "長方形:x=" + x + ";y=" + y +" area=" + area(); 
 }

}
//測試實現介面後的兩個類:TestInterface.java
public class TestInterface
...{
 public class void main (String[] args)
 ...{
  Rectangle R1 = new Rectangle();
  Circle C1 = new Circle();

  System.out.println("R1" + R1.toString() );
  System.out.println("C1" + C1.toString() ); 
 }




    Java語言中的類庫也定義了大量的介面,對鍵盤的擊鍵時間專門編寫了一個類KeyEvent,在java.awt.event包中。對鍵盤擊鍵事件的相應,Java中專門定義了一個介面KeyListener,在相同的包中,介面中有三個抽象方法:
    public abstract void keyPressed(KeyEvent); //鍵按下時執行
    public abstract void keyReleased(KeyEvent); //鍵釋放時執行
    public abstract void keyTyped(KeyEvent); //鍵按下並釋放後執行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.