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

複習

在進入範例之前,再複習一次介面的重點:
    介面中的資料成員必須設定初值
    介面沒有一般函數,只有抽象函數
沿用一直以來喜歡使用的例子,CShape圖形、 CCircle圓形、 CRectangle矩形: 套到本次範例 以類別CCircle圓形、 CRectangle矩形 實作CShape圖形介面

範例

定義介面

1
interface CShape // 定義介面 CShape
2
{
3
final double PI=3.14; //final 可省略
4
public abstract void show(); //public abstract 可省略
5
}
Copied!
在剛剛定義了 CShape 介面,現在示範 CCircle 圓形類別 :
1
class CCircle implementation CShape
2
{
3
double radius;
4
public CCircle(double r) //CCircle建構元
5
{
6
radius=r;
7
}
8
public void show() //改寫介面中抽象函數
9
{
10
System.out.println("面積="+PI*radius*radius);
11
}
12
}
Copied!
同理,撰寫 CRectangle 矩形類別
1
class CRectangle implements CShape
2
{
3
int width,height;
4
public CRectangle(int w,int h) //CRectangle建構元
5
{
6
width=w;
7
height=h;
8
}
9
public void show()
10
{
11
System.out.println("area="+width*height);
12
}
13
}
Copied!

主程式

到目前,我們已經學會如何定義介面,並以類別實作介面;接下來撰寫 main()
1
public static void main(String args[])
2
{
3
CRectangle rect=new CRectangle(5,10);
4
rect.show();
5
6
CCircle cir=new CCircle(2.0);
7
cir.show();
8
}
Copied!
除了透過實作介面的類別建立物件的方式之外,我們也當然要談談 既然無法直接透過介面來建物件:
我們可以使用介面來宣告變數,甚至物件數量一多也可以宣告陣列:
1
public static void main(String args[])
2
{
3
CShape shap01,shap02; //透過介面宣告變數
4
shap01=new CRectangle(5,10);
5
shap01.show();
6
7
shap02=new CCircle(2.0);
8
shap02.show();
9
}
Copied!
我們可以看到,透過介面型態的變數 shap01 shap02 來指向新建立的物件。 不管main()中是使用何種方式,其執行結果皆為: area=50 area=12.56

完整範例程式碼

1
interface CShape // 定義介面 CShape
2
{
3
final double PI=3.14; //final 可省略
4
public abstract void show(); //public abstract 可省略
5
}
6
7
class CCircle implementation CShape
8
{
9
double radius;
10
public CCircle(double r) //CCircle建構元
11
{
12
radius=r;
13
}
14
public void show() //改寫介面中抽象函數
15
{
16
System.out.println("面積="+PI*radius*radius);
17
}
18
}
19
class CRectangle implements CShape
20
{
21
int width,height;
22
public CRectangle(int w,int h) //CRectangle建構元
23
{
24
width=w;
25
height=h;
26
}
27
public void show()
28
{
29
System.out.println("area="+width*height);
30
}
31
}
32
public class interface01
33
{
34
public static void main(String args[])
35
{
36
CShape shap01,shap02; //透過介面宣告變數
37
shap01=new CRectangle(5,10);
38
shap01.show();
39
40
shap02=new CCircle(2.0);
41
shap02.show();
42
}
43
}
Copied!
Last modified 9mo ago