【发布时间】:2015-07-18 16:05:26
【问题描述】:
Java 术语嵌套类和成员类可以互换使用吗?
来自 JLS:
嵌套类是其声明出现在另一个类或接口的主体中的任何类。
[…]
成员类是其声明直接包含在另一个类或接口声明的主体中的类
我认为成员类一词可能不包括匿名类和本地类,但这只是我的猜测。
【问题讨论】:
-
我认为你可能是对的。不是在主类中定义为顶层的类,而是在方法中定义为匿名类的类将是嵌套类,而不是成员类(我认为)。
Java 术语嵌套类和成员类可以互换使用吗?
来自 JLS:
嵌套类是其声明出现在另一个类或接口的主体中的任何类。
[…]
成员类是其声明直接包含在另一个类或接口声明的主体中的类
我认为成员类一词可能不包括匿名类和本地类,但这只是我的猜测。
【问题讨论】:
这是来自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() {};
}
}
【讨论】:
嵌套类可以包括静态或非静态类,其中成员类是后者。所以成员类是嵌套类的子集。
【讨论】: