1. 程式人生 > >閱讀筆記--java程式設計思想第四版 --介面巢狀

閱讀筆記--java程式設計思想第四版 --介面巢狀

/**
 * 該類是用於說明巢狀介面
 */
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()方法。

備註:小弟第一次寫部落格,且是一個初學者,如有理解錯誤,請各位大俠指點,謝謝!