我理解如何使用和导入外部包,但我以前从未打包过自己的类。我读了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的自动包装功能,所以我认为实际包装是正确的。这是一张图片,表明它们确实打包正确:
如您所见,protected SIZE
或public hello()
均未被识别。我在日食之外试过这个,也无济于事。任何帮助将不胜感激。
答案 0 :(得分:2)
SIZE
是A
个对象的实例字段。你需要把它变成一个静态字段。即使这样,它也会成为A
类的成员,因此您必须指定A.SIZE
才能在B
中使用它。
答案 1 :(得分:2)
Class methods无法直接访问instance
variables
或instance 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之外,您不能直接访问静态范围(主要)中非静态(实例成员)的方法或字段。(类成员)