java炒冷饭系列12 接口内部的类 ,从多层嵌套类中访问外部类的成员

来源:互联网 发布:网络架空防静电地板 编辑:程序博客网 时间:2024/05/16 19:02

接口内部的类

正常情况下,不能在接口内放轩任何代码,但嵌套类可以作为接口的一部分。你放到接口中的任何类都自动地是publicstatic的。因为类是static的,只是将嵌套类置于接口的命名空间内,这并不违反接口的规则。你甚至可以在内部类中实现其外围接口,你像下面这样:

public interface ClassInterface {    void howdy();    class Test implements ClassInterface{        @Override        public void howdy() {            System.out.println("Howdy!");        }        public static void main(String[] args) {            new ClassInterface.Test().howdy();        }    }}

从多层嵌套类中访问外部类的成员

一个内部类被嵌套多少层并不重要--它能透明地访问所有它所嵌入的外围类的所有成员,如下如示

public class MNA {    private void f(){        System.out.println("MNA.f() private");    }    class A{        private void g(){            System.out.println("MNA.A.g() private ");        }        public class B{            void h(){                g();                f();            }        }    }    public static void main(String[] args) {        MNA.A.B b = new MNA().new A().new B();        b.h();    }}

可以看到在MNA.A.B中,调用方法g()f()不需要任何条件(即使它们被定义为private)。这个例子同时展示了如何从不同的类里创建多层嵌套的内部类对象的基本语法。”.new”语法能产生正确的作用域,所以不必在调用构造器时限定类名。

总结

这两个知识点了解一下就可以,在开发中很少会用到这种特性。起码我现在还没有遇到(是我太low了吗)

参考文献

《Java编程思想》10.7嵌套类

阅读全文
0 0