iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0

介紹

前言

「介面」的概念與抽象相似對我們來說應該不陌生,目的一樣在於保護特定的資料。

其組成是一個處理抽象的辦法,換句話說,它是由抽象類別組成的概念。

不過提到這個問題,為甚麼還要特別使用介面呢 ?

這個部分會在下面小節「多重介面」(Multiple Interfaces)介紹到


規則

與抽象概念相同,不能建立介面的物件,其中之函數也不能定義初始內容。

不過,還是有一些稍微不同的部分 :

  1. 介面內宣告的變數要設定初值
  2. 介面因為(1.)不會有建構子(Constructor)
  3. 繼承介面的子類別,要使用關鍵字 implements (! extends)
  4. 函數只有抽象類型,如下面所示之格式
interface interface_name{
	public abstract return_value_type function_name(Parameters){
		/*****************/
		/***Description***/
		/*****************/
	}
}
  • 因為介面中函數都是「抽象」類型,所以關鍵字 abstract 可省略
  • 為了要讀取內容,函數修飾字只可以為預設或 public

範例

interface School {
  public abstract void performance(); 
  public void grade(); 
}

class Student implements School {    
  public void performance(){
    System.out.println("You did a great job !!!");
  }

  public void grade(){
    System.out.println("You got A !!!");
  }
}

public class Main{
  public static void main(String[] args) {
    Student new_obj = new Student();   //透過子類別繼承類別創造物件
    new_obj.performnace();
    new_obj.grade();
  }
}
  • 子類別繼承介面成員,可以看作成介面的實作(implements)

多重介面

我們之前在Day 21 : 類別繼承 ( 1 )提到的一個繼承觀念

在Java的繼承中都是「單向繼承」

意思是一個子類別不能同時繼承2個或以上的父類別,這句話其實不盡然全對。

  • 繼承介面類型之子類別,可以一次繼承2個以上的父類別

只要確定都是繼承介面的superclass!!!

interface One {
  public void One_Function(); 
}

interface Two {
  public void Two_Function(); 
}

class sub_can_inhermutli implements One,Two{
  public void One_Function() {
    System.out.println("First interface contents");
  }
  public void Two_Function() {
    System.out.println("Second interface contents");
  }
}

public class Main {
  public static void main(String[] args) {
    sub_can_inhermutli new_obj = new sub_can_inhermutli();
    new_obj.One_Function();
    new_obj.Two_Function();
  }
}

子類別可以繼承多個介面,注意繼承時用逗號隔開介面。


以上內容若有誤或任何問題,煩請不吝嗇告知,謝謝您!!!/images/emoticon/emoticon79.gif


上一篇
Day 25 : 套件
下一篇
Day 27 : 多型
系列文
30天Java由淺入深30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言