7-2 接口
Java通過接口來實現多繼承
Java不直接支持多繼承
接口是一種特殊的抽象類,是方法定義(沒有實現)和常量的集合,是一種引用數據類型(實現雙向傳遞,共享地址)
一個類可以同時實現多個接口
接口也具有繼承性,且支持多繼承
一個接口可以有多個直接父接口,它們之間用逗號分隔
接口中的屬性都是用final修飾的常量
接口中的方法都是用abstract修飾的抽象方法
接口中不能實現任何方法(而抽象類中可以有方法實現)
接口的定義:
[public]interface 接口名 [extends 父接口名列表]
{//接口體;
//常量域聲明
//抽象方法聲明
[public][abstract][native]類型符 方法名(參數列表)[throws 異常列表]{}}
系統默認接口的屬性為:
public static final
系統默認接口中的方法為:
public abstract
e.g;interface A
{int m=0;
void f();}
interface B
{int n=1;
void g();}
interface D extends A,B
{int k;
public void s();}
interface E extends A
{}
接口的實現
一個類實現一個接口,是指該類給出這個接口的所有行為的具體實現過程
一個類在實現某接口的抽象方法時,必須使用完全相同的方法頭,必須使用public修飾符,在實現接口時,系統默認的修飾符(如public)是不能省略的
一個類實現接口后,將繼承接口中的所有靜態常量,為該類所用
若一個類只實現了接口中的部分方法,則該類只能聲明為abstract類。僅當一個類實現了一個接口的所有方法時,才能實例化
接口實現的格式:
[修飾符]class 類名 [extends 父類名]
[implements 接口A,接口B。。。]
{類自定義新成員;
實現接口A(為A中的所有方法編寫方法體)
實現接口B(為B中所有方法編寫方法體)
。。。。。}
e.g:interface A
{int m=2;void f();
public void g();}
class B implements A
{public void f(){System.out.println("java");}
public void g(){System.out.println(m);}}
public class D
{public static void main(String args[])
{A b=new B();
b.f();//java
b.g();//2
}}
e.g:interface A{void f();}
interface B{void g();}
class D implements A,B
{public void f(){System.out.println("AA");}
public void g(){System.out.println("BB");}
}
public class E
{public static void main(String args[])
{A a=new D();
a.f();//AA
B b=new D();
b.g();//BB
}}
對抽象類就要繼承,對接口就要實現;
7-3 完整的Java源文件格式
.package packageName;//指定文件中類所屬的包,最多1句
.import packageName.[className|*];
//指定引入的類,0個或多個
.public classDefinition
//定義public類,0個或1個
.interfaceDefinition and classDefinition
//接口或類定義,0個或多個