我有一个关于对象使用的问题...

我有一个名为Area的类,其中包含一些方法。我想在创建Area对象的另一个类中访问这些方法。

public class calcAreaObj {
Area areaObj = new Area();

public static void main(String[] args){
            areaObj.area(2,3,4);

}

}


为什么在按上述方式创建类时出现错误(“无法静态引用非静态字段areaObj。但是,当编写源代码以使Area对象在主语句中初始化时,如下所示:没有错误...

public class calcAreaObj {

public static void main(String[] args){
    Area areaObj = new Area();
    areaObj.area(2,3,4);
}

}


这是因为在第一种情况下,Area对象是在静态语句之外初始化的吗?如果是这样,为什么这很重要?

最佳答案

这是因为在类范围内定义时,areaObj特定于calcAreaObj的每个实例。这并不是您真正想要的,因为main是静态方法(因此没有与calcAreaObj关联的实例)。您可以使用发布的第二个代码示例,也可以如下修改第一个代码示例:

public class calcAreaObj {
static Area areaObj = new Area();

public static void main(String[] args){
            areaObj.area(2,3,4);

}

}


另外,在这种情况下,如果areaObj没有任何状态,则可以始终将Area.area声明为静态。

08-18 23:21