嵌套类和成员类是一样的吗?

时间:2015-05-07 21:27:54

标签: java class jls

Java术语嵌套类成员类可以互换使用吗?

来自JLS:

  

嵌套类是任何类,其声明发生在另一个类或接口的主体内。

     

[...]

     

成员类是一个类,其声明直接包含在另一个类或接口声明的主体中

我认为成员类这个术语可能不包括匿名类本地类,但这只是我的猜测。

2 个答案:

答案 0 :(得分:2)

这里引用了Chapter 8. Classes

  

成员类声明描述作为周围类成员的嵌套类。成员类可能是static,在这种情况下,他们无法访问周围类的实例变量;或者他们可能是内部阶级。

作为奖励引用,local classes绝对不是会员类:

  

本地类是一个嵌套类,不是任何类的成员[...]。

class Foo {
    // a member class
    class InstanceMember {}
    // a member class
    static class StaticMember {}

    Foo() {
        // not a member class
        class LocalAndNotMember {}
        // not a member class
        Object anonymousAndNotMember = new Object() {};
    }
}

答案 1 :(得分:0)

嵌套类可以包含静态类或非静态类,其中成员类是后者。所以成员类是嵌套类的子集。