1. 程式人生 > >Java自學筆記(九)

Java自學筆記(九)

介面

這裡直接給出定義方式(關於概念,先把它當作是一個抽象類,確實有些類似,但是略有不同,抽象類概括的是某物的本質,介面是某物外的性質)


public interface 介面名稱{             抽象方法…… }(所以介面不能例項化物件,抽象方法了)

接口裡面的成員變數其實是常量,宣告方式為: public static final int i = 1;如果不書寫 public static final
,其實預設也是書寫的,但是為了規範程式碼,在定義成員變數的時候還是這麼做吧。 接口裡面同樣可以定義方法,但是 只能是抽象方法,宣告方式為: public abstract  返回值型別 方法名(給定引數型別 引數名),同上邊一樣,即使宣告中只有 void method(), 預設public abstract。接口裡面就public行得通,可以這麼記憶。

類與介面的關係

類可以 實現介面,關鍵字implements,

格式: class 類 implements 介面名{ 重寫介面的抽象方法 } 注意:定義的類必須重寫所有介面的抽象方法之後,才可以例項化使用,不然會該類還是抽象類的(這點跟抽象類的繼承類似)

介面也可以多實現
interface Fu1
{
	void func1();
}

interface Fu2
{
	void func2();
}
class Zi implements Fu1,Fu2// 實現多介面。
{
	public void func1(){}
	public void func2(){}  //再次注意重寫方法,去掉abstract,補充方法體
}

還有其它組合,例如子類繼承父類,父類再實現介面
class Fu {
	public void func(){}
}
interface jiekou {
	pulbic abstract void newFunc();
}
class Zi extends Fu implements jiekou {
	public void newFunc() {
	}  //這樣子類重寫的介面方法就可以呼叫了,還可以使用父類func方法的功能
}

介面與介面之間的關係,其實也是繼承,對比類不同的是,介面之間的繼承,是可以多繼承的(因為是抽象方法的緣故,子類實現不會發生找不到重寫後的抽象方法)。
interface Fu1{
	void func1();
}
interface Fu2{
	void func2();
}
interface Fu3{
	void func3();
}
interface Zi extends Fu1,Fu2,Fu3{
	void func();
}

小結,類與介面的相互關係

類與類的關係:繼承 ,可以多層繼承,但是不允許多繼承,類可以是抽象類,然後涉及到抽象方法及子類重寫的問題。 類與介面的關係:實現 ,除了一個類實現介面,可以再類繼承的關係上實現介面,而且是實現多個介面 介面與介面關係:繼承,可以多繼承。