静态方法和静态变量是否被JLS视为类成员?

时间:2015-09-03 19:29:10

标签: java

我想知道一个类中定义的静态方法和静态变量是否被认为是该类的成员(或者如果术语'成员'仅表示实例变量/方法和内部类)

哪些成员的类由Java组成?

3 个答案:

答案 0 :(得分:2)

§8中定义的JLS中成员的定义是:

  

类的主体声明成员(字段和方法以及嵌套   类和接口),

所以是静态与否,字段或方法是该类的成员。这与通常被理解为"成员"的情况非常吻合。一些英文的东西。可能更有争议的是:

  

类的成员包括已声明和继承的成员

答案 1 :(得分:1)

你谈论字段和方法,然后引用静态类,但无论如何:

静态成员仍然是成员。

来自JLS 8.1.6

ClassMemberDeclaration:
    FieldDeclaration 
    MethodDeclaration 
    ClassDeclaration 
    InterfaceDeclaration 
  ;

例如,字段声明是specified here

FieldDeclaration:
  {FieldModifier} UnannType VariableDeclaratorList ;

最后FieldModifier可能包括static

FieldModifier:
  (one of) 
  Annotation public protected private 
  static final transient volatile

答案 2 :(得分:1)

成员包括方法和所有变量,无论是否为静态。但是成员不包括构造函数。

简而言之,类中的所有{{1}}都是成员,无论是否继承自超类,无论是静态还是非静态。