iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
自我挑戰組

菜雞的JAVA日記系列 第 20

DAY20-JAVA的介面

  • 分享至 

  • xImage
  •  

介面
介面(interface)是JAVA所提供的另一項重要功能,它的結構和抽象類別非常相似。介面本身也具有資料成員與抽象函數,但它與抽象類別有以下兩點不同:
(1)介面的資料成員必須初始化(設定初值)
(2)介面裡的函數必須全部定義成abstract,換言之,介面不能像抽象類別一樣保有一般函數,而必須全部都是「抽象函數」。

interface 介面名稱{ //定義介面
final 資料型態 成員名稱 = 常數; //資料成員必須設定初值
修飾子 abstract 傳回值資料型態 函數名稱(引數...); //抽象函數裡,沒有定義處理方式
}

interface Shape{  //定義Shape介面
    double PI = 3.14; //省略final關鍵字
    void area();    //省略abstract關鍵字
}

介面與一般類別一樣,本身也具有資料成員與函數成員,但資料成員一定要有初值的設定,且此值將不能再更改,而函數必須是「抽象函數」。
記住以下兩點:
(1)介面裡的「抽象函數」,只要做定義名稱,不用定義其處理方式。
(2)資料成員必須設定初值。
此外,介面裡的抽象函數只能宣告為public,或是不做宣告,但不能宣告成protected或是private,以便讓實作介面的類別都能取用到他。

實作
因為介面無法像一般類別一樣,用new運算子直接產生一個物件。因此我們必須利用介面的特性來打造一個新的類別,再用他來建立物件。利用介面A打造新的類別B的過程,稱為以類別B實作介面A,或簡稱為介面的實作(implementation)。

class 類別名稱 implements 介面名稱{
...
}

class Circle implements Shape{  //以Circle類別實作Shape介面
    double radius; 
    public Circle(radius r){  //建構元
        radius = r;
    }
    public void area(){    //省略abstract關鍵字
        System.out.println("area = "+PI*radius*radius);
    }
}

菜鳥工程師的體脂肪

菜鳥工程師也有分享食記,歡迎大家追蹤喔~~
https://instagram.com/engineer_bodyfat?utm_medium=copy_link

連假結束的第一天上班上課日...
好累啊啊啊QQ
See U tomorrow~


上一篇
DAY19-JAVA的抽象類別(2)
下一篇
DAY21-JAVA的多重繼承
系列文
菜雞的JAVA日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言