什么是场?

时间:2015-12-08 12:35:45

标签: java class variables field

在Oracle教程中,它显示为:

“要访问某个字段,您可以使用对象的命名引用,如前面的示例所示,或者您可以使用任何返回对象引用的表达式。”

鉴于'field'是'class variable'的另一个名字;为什么要使用'对象的命名引用'?当然最好使用'命名引用类'?

重写看起来像这样: “要访问类变量,可以使用对象的命名引用,如前面的示例所示,或者您可以使用任何返回对象引用的表达式。”

当然,“对象的命名引用”将用于访问“对象变量”而不是“类变量”?

2 个答案:

答案 0 :(得分:0)

我将“对象的命名引用”解释为“变量”。以下是the documentationfield的定义:

  

班级的数据成员。除非另有说明,否则字段不是静态的。

因此,在以下示例中,book是一个变量(“对象的命名引用”,books[0]是“返回引用的表达式”,Title是一个“场”:

public class Book
{
    public string Title;
}

Book book = new Book();
book.Title = "Moby Dick";  // set field value

Book[] books = new Book[10];
books[0] = book;

string title = books[0].Title;  // expression that returns an object reference.

答案 1 :(得分:-1)

  

鉴于'field'是'class variable'的另一个名字;为什么要使用'对象的命名引用'?当然最好使用'命名引用类'?

我不知道教程是否真的说明了这一点,但无论如何这都是错误的。 Java语言规范明确指出(强调我的):

  

字段声明(第8.3节)描述了一次实现的类变量和实例变量,这些变量是为类的每个实例新近实现的。

访问和/或修改这些实例变量,它们通过命名引用或每个返回对象引用的表达式为每个对象新化身,因此非常有意义。

如果教程确实陈述了与此相矛盾的内容,那就不正确了。