更新時間:2020-10-29 17:42:53 來源:動力節點 瀏覽1203次
在Java語言中,接口可以嵌套在類或其它接口中。由于Java中interface內是不可以嵌套class的,所以Java嵌套接口就共有兩種方式:class嵌套interface、interface嵌套interface。
1、接口中定義的變量默認是public static final 型,且必須給其初值,所以實現類中不能重新定義,也不能改變其值。
2、接口中的方法默認都是 public abstract 類型的。
3、接口默認也是abstract的的:public abstract interface xx ===public interface xx
public interface AreaInterface{
double pai=Math.PI;
double area();
interface Neibujiekou{
viod menthod();
}
}
public abstract interface AreaInterface{
public static final double pai = Math,.PI;
public abstract double area();
}
4、 interface嵌套interface
由于接口的元素必須是public的,所以被嵌套的接口自動就是public的,而不能定義成private的。在實現這種嵌套時,不必實現被嵌套的接口。
classCircle implements AreaInterface{
只需實現area();不用實現menthod();
}
class Circle implements AreaInterface,AreaInterface.Neibujiekou{
兩個方法都要實現
}
class A {
private interface D {
void f();
}
private class DImp implements D {
public void f() {}
}
public class DImp2 implements D {
public void f() {}
}
public D getD() { return new DImp2(); }
private D dRef;
public void receiveD(D d) {
dRef = d;
dRef.f();
}
}
public class NestingInterfaces {
public static void main(String[] args) {
A a = new A();
//The type A.D is not visible
//! A.D ad = a.getD();
//Cannot convert from A.D to A.DImp2
//! A.DImp2 di2 = a.getD();
//The type A.D is not visible
//! a.getD().f();
A a2 = new A();
a2.receiveD(a.getD());
}
}
其中語句A.D ad = a.getD()和a.getD().f()的編譯錯誤是因為D是A的私有接口,不能在外部被訪問。語句A.DImp2 di2 = a.getD()的錯誤是因為getD方法的返回類型為D,不能自動向下轉型為DImp2類型。
5、class嵌套interface
這時接口可以是public,private和package的。重點在private上,被定義為私有的接口只能在接口所在的類被實現??梢员粚崿F為public的類也可以被實現為private的類。當被實現為public時,只能在被自身所在的類內部使用。只能夠實現接口中的方法,在外部不能像正常類那樣上傳為接口類型。
總結:java接口嵌套事實上是指:Java中接口可以嵌套在類中,也可以嵌套在接口中,處于與成員變量和方法平級的位置;不論定義在接口,還是類中,java接口嵌套默認強制是 static;嵌套在類中的接口,可以被private,protected,default和public四種權限修飾;嵌套在接口中的接口,只能被public修飾;在實現Java接口的過程中,我們不需要實現嵌套在其內部的任何接口。并且private接口是不能在定義它的類之外被實現。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習