我有一个关于对象使用的问题...
我有一个名为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
声明为静态。