从同一个包识别变量和方法的问题

时间:2013-08-07 04:27:54

标签: java

我理解如何使用和导入外部包,但我以前从未打包过自己的类。我读了Oracle Tutorial on Creating a Package,除了包上的几个站点/ SO线程外,还查看了In Java, what's the difference between public, default, protected and private。对于我的生活,我无法弄清楚为什么这个非凡的简单例子不起作用:

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的自动包装功能,所以我认为实际包装是正确的。这是一张图片,表明它们确实打包正确: enter image description here

如您所见,protected SIZEpublic hello()均未被识别。我在日食之外试过这个,也无济于事。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

SIZEA个对象的实例字段。你需要把它变成一个静态字段。即使这样,它也会成为A类的成员,因此您必须指定A.SIZE才能在B中使用它。

答案 1 :(得分:2)

Class methods无法直接访问instance variablesinstance methods - 他们必须使用对象引用。

答案 2 :(得分:1)

你得到的错误在这里修复

package PTest;

public class B
{
 public static void main(String[] args)
 {  
    A MyClassA = new A();               
    System.out.println(MyClassA.SIZE);
    MyClassA.printSize();
 }
}

答案 3 :(得分:0)

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