天天看点

阅读笔记--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()方法。

备注:小弟第一次写博客,且是一个初学者,如有理解错误,请各位大侠指点,谢谢!

继续阅读