0

我了解如何使用和导入外部包,但我以前从未打包过自己的类。我阅读了有关创建包的 Oracle 教程,并查看了在 Java中,除了包上的几个站点/SO 线程之外,公共、默认、受保护和私有之间有什么区别。对于我的生活,我无法弄清楚为什么这个非凡的简单示例不起作用:

package PTest;

public class A
{
    protected final int SIZE = 10; 

    public void printSize()
    {
        System.out.println(SIZE);
    }
}

package PTest;

public class B
{
    public static void main(String[] args)
    {
        System.out.println(SIZE);
        hello();
    }
}

我使用了eclipse的自动打包功能,所以我假设实际打包是正确的。这是一张显示它们确实被正确包装的图像: 在此处输入图像描述

如您所见, theprotected SIZE或 thepublic hello()均未被识别。我已经在eclipse之外尝试过这个,也无济于事。任何帮助将不胜感激。

4

4 回答 4

2

类方法不能访问instance variablesinstance methods直接访问——它们必须使用对象引用。

于 2013-08-07T04:36:58.500 回答
2

SIZEA对象的实例字段。您需要将其设为静态字段。即使那样,它将是A该类的成员,因此您必须指定A.SIZEB.

于 2013-08-07T04:31:29.697 回答
1

您收到的错误已在此处修复

package PTest;

public class B
{
 public static void main(String[] args)
 {  
    A MyClassA = new A();               
    System.out.println(MyClassA.SIZE);
    MyClassA.printSize();
 }
}
于 2013-08-07T04:41:52.240 回答
0

您不能直接访问在静态范围(主)中的非静态方法或字段(实例成员),而不是使用对象然后访问或使这些实例成员成为静态成员。(类成员)

于 2013-08-07T04:31:07.577 回答