java中的类成员定义

时间:2013-07-15 15:00:36

标签: java

我最近遇到过这句话:

"Class A has class member int a"

可能很明显,但这句话只意味着a是在int中定义的class A,对吧?

另一件事,例如a是在class A中的方法下定义的。它还在吗? 班级成员?
我没有找到班级成员的明确定义,我看了here: 但它没有多大帮助。

提前感谢您的帮助

4 个答案:

答案 0 :(得分:6)

类成员是调用静态成员的另一种方式。

class A {
    int a; //instance variable
    static int b; //class variable
    public void c() {
        int d; //local variable
    }
}

答案 1 :(得分:1)

In same docs

  

在声明中包含static修饰符的字段称为静态字段或类变量

     

类变量由类名本身引用,如

Bicycle.numberOfBicycles
  

这清楚表明它们是类变量。

答案 2 :(得分:1)

类成员不仅仅是类的变量。可以使用类名访问它们。这意味着它们是该类的静态变量。

该文件清楚地提到了它。

public class Bicycle {

private int cadence;
private int gear;
private int speed;

// add an instance variable for the object ID
private int id;

// add a class variable for the
// number of Bicycle objects instantiated
private static int numberOfBicycles = 0;

 ...
}

在上面的代码中,numberOfBicycles是一个类成员。可以使用

访问它
Bicycle.numberOfBicycles

方法中的变量无法像这样访问。所以他们不能成为班级成员。在方法内声明的变量是局部变量,属于该方法。因此,您可以将它们称为最终,但不是静态或公共或受保护或私有。

答案 3 :(得分:0)

在你提到的文档link中,它在第一行(标题之后)清楚

In this section, we discuss the use of the static keyword to create fields and methods that belong to the class, rather than to an instance of the class.

所以这意味着static关键字用于创建类字段和方法(即.class成员)。 所以在你的情况下,

class A{
    int a;
    public void methodA(){
        int a;//inner a
    }

}

你问的是methodA()里面的int a仍然是一个类成员吗?

答案是:因为它之前没有静态关键字。如果您尝试使用静态关键字:

class A{
    int a;
    public void methodA(){
        static int a;//inner a will cause compile time error
    }

}

您将收到编译时错误。 希望有所帮助!! :)