第二章:簡單 Java 程式解析
第三章:變數與資料型態
第四章:運算子、運算式與敘述
第五章:選擇性敘述與迴圈
第十章:實例變數與函數、類別變數與函數
Powered By GitBook
介面的延伸
前三篇從 帶入介面的觀念,到使用介面來達到多重繼承;而本篇則是要再將父子關係帶入介面!
介面也可以跟類別一樣,有 子介面 繼承 父介面。 還有一點相同的是:也是使用 extends 關鍵字 來做介面的繼承。
與類別不同的是,介面可以繼承多個介面!

複習

介面 的格式:
1
interface 介面名稱
2
{
3
final 資料型態 成員名稱=常數;
4
5
public abstract 傳回值資料型態 函數名稱(引數...);
6
//抽象函數並無定義處理方式
7
}
Copied!
而介面的繼承也很簡單:
1
interface 子介面名稱 extends 父介面1名稱,父介面2名稱,...
2
{
3
...
4
}
Copied!
讓我們透過實例了解本篇內容吧:將上一篇 多重繼承 中的範例拿來本次改寫使用:
而這次 CShape 這個父介面的功能有資料成員PI 以及設定顏色的抽象函數 setColor(); CShape2D 則是用來顯示面積的用途。

定義

父介面

1
interface CShape //父介面 CShape
2
{
3
final double PI=3.14;
4
abstract void setColor(String str);
5
}
Copied!

子介面繼承自父介面

1
interface CShape2D extends CShape //CShape2D繼承父介面CShape
2
{
3
abstract void area();
4
}
Copied!
上方的介面繼承示意圖當中也有註明 extends 與 implements ,提醒實作介面時是使用implements。
另外在定義介面時,往往程式碼也是蠻簡潔的, 因為重點都是寫在最後一個類別實作介面的敘述當中。
1
class CCircle implements CShape2D //實作 CShape2D子介面
2
{
3
double radius;
4
String color;
5
6
public CCircle(double r)
7
{
8
radius=r;
9
}
10
public void setColor(String str)
11
{
12
color=str;
13
System.out.println("color="+color);
14
}
15
public void show()
16
{
17
System.out.println("area="+PI*radius*radius);
18
}
19
}
Copied!
另外可以注意到,CCircle 類別可以取用到 資料成員PI。 原因是因為 CShape2D 繼承來自父介面的成員,因此類別實作子介面時也能取用到。

完整程式碼

1
interface CShape //父介面 CShape
2
{
3
final double PI=3.14;
4
abstract void setColor(String str);
5
}
6
7
interface CShape2D extends CShape //CShape2D繼承父介面CShape
8
{
9
abstract void area();
10
}
11
12
class CCircle implements CShape2D //實作CShape2D介面
13
{
14
double radius;
15
String color;
16
17
public CCircle(double r)
18
{
19
radius=r;
20
}
21
public void setColor(String str)
22
{
23
color=str;
24
System.out.println("color="+color);
25
}
26
public void show()
27
{
28
System.out.println("area="+PI*radius*radius);
29
}
30
}
31
public class interface03
32
{
33
public static void main(String args[])
34
{
35
CCircle moon=new CCircle(5.0);
36
moon.setColor("yellow");
37
moon.show();
38
}
39
}
Copied!
Last modified 9mo ago