一个复杂的 Java 接口嵌套程序

代码:

class A {
    // B:包访问权限
    interface B {
        // 接口中默认的权限都是 public,即使你不声明
        void f();
    }

    public class BImpl implements B {
        public void f() {}
    }

    private class BImpl2 implements B {
        public void f() {}
    }
    // C:public 访问权限
    public interface C {
        // 此处的 public 声明是多余的
        public void f();
    }

    class CImpl implements C {
        public void f() {}
    }

    private class CImpl2 implements C {
        public void f() {}
    }
    // D:private 访问权限
    private interface D {
        void f();
    }

    private class DImpl implements D {
        public void f() {}
    }

    public class DImpl2 implements D {
        public void f() {}
    }

    public D getD() {
        return new DImpl2();
    }

    private D dRef;
    public void receiveD(D d) {
        dRef = d;
        dRef.f();
    }
}

interface E {
    interface G {
        void f();
    }

    // 接口中的接口默认都是 public 权限
    public interface H {
        void f();
    }

    void g();

    // 接口中不能定义 private 权限的接口
    // private interface I {}
}

public class NestingInterfaces {

    public class BImpl implements A.B {
        public void f() {}
    }

    class CImpl implements A.C {
        public void f() {}
    }

    // 不能实现私有接口
    /*class DImpl implements A.D {
        public void f() {}
    }*/

    class EImpl implements E {
        public void g() {}
    }

    class EImpl2 implements E {
        public void g() {}
        class EG implements E.G {
            public void f() {}
        }
    }

    class EGImpl implements E.G {
        public void f() {}
    }

    public static void main(String[] args) {
        A a = new A();
        // 不能访问类的私有接口
        // A.D = a.getD();
        // DImpl2 是一个 D,因此也不能返回
        // A.DImpl2 = a.getD();
        // DImpl2 是一个 D,因此也不能访问相应的方法
        // a.getD().f();
        A a2 = new A();
        // 只有这样做!!!
        a2.receiveD(a.getD());
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值