閱讀筆記--java程式設計思想第四版 --介面巢狀
阿新 • • 發佈:2019-02-10
/**
* 該類是用於說明巢狀介面
*/
class A{
interface B{
void fun();
}
public class BImp implements B{
public void fun(){}
}
private class BImp2 implements B{
public void fun() {}
}
public interface C {
void fun();
}
class CImp implements C{
public void fun() {}
}
private class CImp2 implements C{
public void fun() {}
}
private interface D{
void fun();
}
private class DImp implements D{
public void fun(){};
}
public class DImp2 implements D{
public void fun() {}
}
public D getD(){return new DImp2();}
private D dRef;
public void receiveD(D d){
dRef = d;
dRef.fun();
}
}
interface E{
interface G{
void fun();
}
public interface H{
void f();
}
void g();
}
public class NestingInterfaces {
public class BImp implements A.B{
public void fun(){}
}
class CImp implements A.C{
public void fun(){};
}
class EImp implements E{
public void g(){};
}
class EGImp implements E.G{
public void fun() {
};
}
class EImp2 implements E{
public void g(){}
class EG implements E.G{
public void fun() {}
}
}
public static void main(String[] args) {
A a = new A();
/*A.D d = a.getD(); //D為私有類,外面的類沒有許可權訪問 */
/*A.DImp2 d2 = a.getD(); */
/*a.getD().fun();*/
a.receiveD(a.getD());
}
}
1、文中提到:實現一個priavate介面只是一種方式,它可以強制該介面中的方法定義不要新增任何型別的資訊(也就是說不允許向上轉型)。這一句話不太瞭解,希望有大神幫忙解答,感激不盡。
2、介面中巢狀的介面也是public型別的。
3、getD()方法中,因為返回的型別D是A類中的私有類,所以在main方法中,不能申明A.D型別的物件,又因為getD()方法返回的D為private型別,所以不能呼叫fun()方法。
備註:小弟第一次寫部落格,且是一個初學者,如有理解錯誤,請各位大俠指點,謝謝!