第二章:簡單 Java 程式解析
第三章:變數與資料型態
第四章:運算子、運算式與敘述
第五章:選擇性敘述與迴圈
第十章:實例變數與函數、類別變數與函數

範例:介面

複習

在進入範例之前,再複習一次介面的重點:

  • 介面中的資料成員必須設定初值

  • 介面沒有一般函數,只有抽象函數

沿用一直以來喜歡使用的例子,CShape圖形、 CCircle圓形、 CRectangle矩形: 套到本次範例 以類別CCircle圓形、 CRectangle矩形 實作CShape圖形介面

範例

定義介面

interface CShape // 定義介面 CShape
{
final double PI=3.14; //final 可省略
public abstract void show(); //public abstract 可省略
}

在剛剛定義了 CShape 介面,現在示範 CCircle 圓形類別 :

class CCircle implementation CShape
{
double radius;
public CCircle(double r) //CCircle建構元
{
radius=r;
}
public void show() //改寫介面中抽象函數
{
System.out.println("面積="+PI*radius*radius);
}
}

同理,撰寫 CRectangle 矩形類別

class CRectangle implements CShape
{
int width,height;
public CRectangle(int w,int h) //CRectangle建構元
{
width=w;
height=h;
}
public void show()
{
System.out.println("area="+width*height);
}
}

主程式

到目前,我們已經學會如何定義介面,並以類別實作介面;接下來撰寫 main()

public static void main(String args[])
{
CRectangle rect=new CRectangle(5,10);
rect.show();
CCircle cir=new CCircle(2.0);
cir.show();
}

除了透過實作介面的類別建立物件的方式之外,我們也當然要談談 既然無法直接透過介面來建物件:

我們可以使用介面來宣告變數,甚至物件數量一多也可以宣告陣列:

public static void main(String args[])
{
CShape shap01,shap02; //透過介面宣告變數
shap01=new CRectangle(5,10);
shap01.show();
shap02=new CCircle(2.0);
shap02.show();
}

我們可以看到,透過介面型態的變數 shap01 shap02 來指向新建立的物件。 不管main()中是使用何種方式,其執行結果皆為: area=50 area=12.56

完整範例程式碼

interface CShape // 定義介面 CShape
{
final double PI=3.14; //final 可省略
public abstract void show(); //public abstract 可省略
}
class CCircle implementation CShape
{
double radius;
public CCircle(double r) //CCircle建構元
{
radius=r;
}
public void show() //改寫介面中抽象函數
{
System.out.println("面積="+PI*radius*radius);
}
}
class CRectangle implements CShape
{
int width,height;
public CRectangle(int w,int h) //CRectangle建構元
{
width=w;
height=h;
}
public void show()
{
System.out.println("area="+width*height);
}
}
public class interface01
{
public static void main(String args[])
{
CShape shap01,shap02; //透過介面宣告變數
shap01=new CRectangle(5,10);
shap01.show();
shap02=new CCircle(2.0);
shap02.show();
}
}