[英]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) {
}
}
和同一个包中的另一个类,
package alphabet;
import alphabet.A;
public class B{
void methodB1(){
}
public static void main(String[] args) {
A AinB = new A();
}
}
当我编译B
我无法实例化A
这是为什么? A
是公共类, 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
由于您的类是包字母表,因此您需要将它们放在名为alphabet的子目录中,然后使用以下命令行从其父目录运行javac:
javac alphabet/B.java
问题是你编译错了。 由于您使用的是包,因此在编译时您需要在包外。
所以不是javac B.java
创建一个与包名称相同的文件夹/目录,即alphabet
,并将java文件移动到它。
使用javac alphabet/B.java
删除B类中的import语句。您不需要从同一个包中导入。
你有2个主要方法,你应该只有1个用于启动程序,尝试创建一个A对象或者你想先运行的类:
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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.