1. 程式人生 > >Java學習個人備忘錄之接口

Java學習個人備忘錄之接口

strac 就會 使用 rgs 筆記 inter bstr blog ring

abstract class AbsDemo
{
	abstract void show1();
	abstract void show2();
}


當一個抽象類中的方法都是抽象的時候,這時可以將該抽象類用另一種形式定義和表示-----接口 interface


定義接口使用的關鍵字不是class,是interface。

對於接口當中常見的成員:而且這些成員都有固定的修飾符
1. 全局常量:public static final
2. 抽象方法:public abstract

由此得出結論,接口中的成員都是公共的權限。

interface Demo
{
	public static final int NUM = 4;
	public abstract void show1();
	public abstract void show2();
}

如果接口中不寫固定修飾符,如下:

interface Demo
{
	int NUM = 4;
	void show1();
	void show2();
}

編譯的時候就會自動給你加上,所以這樣寫也是可以的。
但是不推薦這樣寫,影響閱讀性。


實現implements

interface Demo
{
	public static final int NUM = 4;
	public abstract void show1();
	public abstract void show2();
}

類與類之間是繼承關系,類與接口之間是實現關系。

接口不可以實例化。

只能由實現了接口的子類並覆蓋了接口中所有的抽象方法後,該子類才可以實例化。
否則,這個子類就是一個抽象類。

class DemoImpl implements /*實現*/ Demo
{
	public void show1()
	{}
	public void show2()
	{}
}

class InterfaceDemo
{
	public static void main(String[] args)
	{
		DemoImpl d = new DemoImpl();
		System.out.println(d.NUM);
		System.out.println(DemoImpl.NUM);
		System.out.println(Demo.NUM);
		//這3中輸出方法都可以
	}
}



多實現

在java中不直接支持多繼承,因為會出現調用的不確定性。
所以java將多繼承機制進行改良,在java中變成了多實現。

一個類可以實現多個接口。

interface A
{
	public abstract void show();
}

interface Z
{
	public abstract void show();
}

class Test implements A,Z //多實現
{
	public void show()//把上面兩個show方法都覆蓋了.
	{
	}
}


一類在繼承另一個類的同時,還可以實現多個接口。

class Q
{
	public void method()
	{}
}
class Test2 extends Q implements A,Z
{
}
//接口的出現避免了單繼承的局限性

class InterfaceDemo
{
	public static void main(String[] args)
	{
		Test t = new Test();
		t.show();
	}
}

interface CC
{
	void show();
}
interface MM
{
	void method();
}


interface QQ extends CC,MM //接口與接口之間是繼承關系,可以多繼承,因為沒有方法體
{
}



筆記本電腦使用
為了擴展筆記本的功能,但日後出現什麽功能設備不知道。
就定義一個規則,只要日後出現的設備都符合這個規則就可以了。
規則在java中就是接口。

interface USB//暴漏的規則
{
	public void open();
	public void close();
}
class BookPC
{
	public static void main(String[] args)
	{
		//useMouse(null);
		useUSB(new Upan()); //一年後  功能擴展
		//接口類型的引用,用於接收(指向)接口的子類對象.
		useUSB(new UsbMouse());
	}

	//使用規則
	public static void useUSB(USB u)
	{
		u.open();
		u.close();
	}
}
//一年後,買了一個U盤
//實現規則
class Upan implements USB
{
	public void open()
	{
		System.out.println("upan open");
	}
	public void close()
	{
		System.out.println("upan close");
	}
}
//這就是前期對外開放的接口,後期可以使用進來的設備
class UsbMouse implements USB
{
	public void open()
	{
		System.out.println("UsbMouse open");
	}
	public void close()
	{
		System.out.println("UsbMouse close");
	}
}

Java學習個人備忘錄之接口