Java介面作為型別


介面定義了一個新的參照型別。可以使用介面型別來宣告變數,在方法中宣告引數型別,作為方法的返回型別等。

interface  Shape {
    void  draw();
}
public class Main {
  // interface type as instance variable
  private Shape myShape;

  // interface type as parameter type for a constructor
  public Main(Shape s) {
    this.myShape = s;
  }

  // interface type as return type of a method
  public Shape getShape() {
    return this.myShape;
  }

  // interface type as parameter type for a method
  public void setShape(Shape s) {
    this.myShape = s;
  }

  public void letItSwim() {
    // interface type as a local variable
    Shape locaShape = null;

    locaShape = this.myShape;

    // interface variable can invoke methods
    // declared in the interface and the Object class
    locaShape.draw();
  }
}

介面型別的變數是指其類實現該介面的記憶體中的物件。使用介面型別的變數或直接使用介面名稱來存取介面中宣告的任何常數欄位。

最好使用介面名存取介面的常數。使用介面型別的變數來呼叫介面中宣告的任何方法。介面型別的變數可以呼叫java.lang.Object類的任何方法。

預設情況下,介面型別的範例或靜態變數將初始化為null