1. 程式人生 > >說下Interface的用法【轉】

說下Interface的用法【轉】

1.介面的概述

主要是使用介面來拓展定義類的功能,可以彌補java中單繼承的缺點。

2.介面的定義格式

interface 介面名{

   屬性
   抽象方法

}

介面的體驗

interface Inter
{
	int num = 6;  可以定義屬性與方法。
	void show();
}

注意:

 介面中的所有屬性 預設的修飾符是  public static final。

 介面中的所有方法 預設的修飾符是  public abstract。

3.介面的特點

(1) 類實現介面可以通過implements實現,實現介面的時候必須把介面中的所有方法實現,一個類可以實現多個介面。

(2)介面中定義的所有的屬性預設是public static final的,即靜態常量既然是常量,那麼定義的時候必須賦值。

(3)介面中定義的方法不能有方法體。介面中定義的方法預設新增public abstract

(4)有抽象函式的不一定是抽象類,也可以是介面類。

(5)由於介面中的方法預設都是抽象的,所以不能被例項化。

(6) 對於介面而言,可以使用子類來實現介面中未被實現的功能函式。

(7)如果實現類中要訪問介面中的成員,不能使用super關鍵字。因為兩者之間沒有顯示的繼承關係,況且介面中的成員成員屬性是靜態的。可以使用介面名直接訪問。

(8) 介面沒有構造方法。

interface A{
	int a=12;
	int getA();
}
 
interface B{
	int b=10;
}
 
public class Demo1 implements A,B{
 
	@Override
	public int getA() {
		// TODO Auto-generated method stub
		return 0;
	}
}

4.介面與介面,類之間的關係

(1) 大家之前都知道類與類之間的關係繼承,那麼介面與類之間又是怎樣子的關係呢?介面與類之間是實現關係。非抽象類實現介面時,必須把接口裡面的所有方法實現。類實現介面用關鍵字implments,類與介面之間是可以多實現的(即一個類可以實現多個介面)。

interface Eraser {
	public static final String color = "白色";
	public abstract void clean();
}
class Pencil implements Eraser {
	String name;
	Pencil() {
	}
	Pencil(String name) {
		this.name = name;
	}
	void write() {
		System.out.println("寫字");
	}
	@Override
	public void clean() {
		System.out.println("塗改...");
	}
}

分析:

原本鉛筆沒有塗改功能的,但是一旦實現了Eraser介面做了實現,那麼就具備了塗改功能,那麼介面的作用則是拓展功能。

(2)介面與介面之間的關係式繼承

interface A{
	public void show();
}
interface B{
	public void print();
}
interface C extends A,B{
	
}

介面與介面之間的關係是繼承,介面可以多繼承介面.

總結:

  • 類與介面之間關係: 實現關係。 
  1. 重點內容非抽象類實現一個介面時,必須要把介面中所有方法全部實現。 
  2. 抽象類實現一個介面時,可以實現也可以不實現介面中的 方法。 
  3. 一個類可以實現多個介面 。
  • 介面與介面之間關係: 繼承關係。
  1. 類與介面是可以多實現的,介面與介面是可以多繼承的。
  2. 一個介面是可以繼承多個介面的。

這裡經常進入到面試題,這篇說的比較清楚,自己總結一下