无法在同一个包中实例化 public class
Can't instantiate public class in the same package
所以我制作了这个 java 文件 A.java,
package alphabet;
public class A{
private String private_A;
String _A;
protected String protected_A;
public String public_A;
public A(){
private_A="Private A";
_A="Package Private A";
protected_A="Protected A";
public_A="Public A";
}
public static void main(String[] args) {
}
}
和另一个class在同一个包里,
package alphabet;
import alphabet.A;
public class B{
void methodB1(){
}
public static void main(String[] args) {
A AinB = new A();
}
}
编译时B
无法实例化A
。
这是为什么? A
是一个public,class和B
属于同一个包? B
不应该能够创建 A
的实例吗?
这很笨,但是谢谢。
编辑: 遇到这些错误,
*@*:~/rand$ javac B.java
B.java:3: error: cannot find symbol
import alphabet.A;
^
symbol: class A
location: package alphabet
B.java:9: error: cannot find symbol
A AinB = new A();
^
symbol: class A
location: class B
B.java:9: error: cannot find symbol
A AinB = new A();
^
symbol: class A
location: class B
3 errors
编辑:删除了仍然出现这些错误的导入语句
B.java:9: error: cannot find symbol
A AinB = new A();
^
symbol: class A
location: class B
B.java:9: error: cannot find symbol
A AinB = new A();
^
symbol: class A
location: class B
2 errors
删除classB中的import语句,不需要从同一个包中导入。
您有 2 个主要方法,您应该只有 1 个用于启动程序,请先尝试在 be 或任何 class 中创建一个对象 运行:
package alphabet;
public class A{
private String private_A;
String _A;
protected String protected_A;
public String public_A;
public A(){
private_A="Private A";
_A="Package Private A";
protected_A="Protected A";
public_A="Public A";
}
public static void main(String[] args) {
B bclass = new B();
bclass.yourmethod();
}
}
因为你的 类 在包 alphabet 中,你需要将它们放在一个名为 alphabet 的子目录中,然后使用以下命令行从其父目录中 运行 javac:
javac alphabet/B.java
问题是你编译错了。由于您使用的是包,编译时需要在包外。
所以 javac B.java
创建一个与包名相同的 folder/directory,即 alphabet
并将 java 文件移动到它。
使用javac alphabet/B.java
所以我制作了这个 java 文件 A.java,
package alphabet;
public class A{
private String private_A;
String _A;
protected String protected_A;
public String public_A;
public A(){
private_A="Private A";
_A="Package Private A";
protected_A="Protected A";
public_A="Public A";
}
public static void main(String[] args) {
}
}
和另一个class在同一个包里,
package alphabet;
import alphabet.A;
public class B{
void methodB1(){
}
public static void main(String[] args) {
A AinB = new A();
}
}
编译时B
无法实例化A
。
这是为什么? A
是一个public,class和B
属于同一个包? B
不应该能够创建 A
的实例吗?
这很笨,但是谢谢。
编辑: 遇到这些错误,
*@*:~/rand$ javac B.java
B.java:3: error: cannot find symbol
import alphabet.A;
^
symbol: class A
location: package alphabet
B.java:9: error: cannot find symbol
A AinB = new A();
^
symbol: class A
location: class B
B.java:9: error: cannot find symbol
A AinB = new A();
^
symbol: class A
location: class B
3 errors
编辑:删除了仍然出现这些错误的导入语句
B.java:9: error: cannot find symbol
A AinB = new A();
^
symbol: class A
location: class B
B.java:9: error: cannot find symbol
A AinB = new A();
^
symbol: class A
location: class B
2 errors
删除classB中的import语句,不需要从同一个包中导入。
您有 2 个主要方法,您应该只有 1 个用于启动程序,请先尝试在 be 或任何 class 中创建一个对象 运行:
package alphabet;
public class A{
private String private_A;
String _A;
protected String protected_A;
public String public_A;
public A(){
private_A="Private A";
_A="Package Private A";
protected_A="Protected A";
public_A="Public A";
}
public static void main(String[] args) {
B bclass = new B();
bclass.yourmethod();
}
}
因为你的 类 在包 alphabet 中,你需要将它们放在一个名为 alphabet 的子目录中,然后使用以下命令行从其父目录中 运行 javac:
javac alphabet/B.java
问题是你编译错了。由于您使用的是包,编译时需要在包外。
所以 javac B.java
创建一个与包名相同的 folder/directory,即 alphabet
并将 java 文件移动到它。
使用javac alphabet/B.java