Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t在同一个包中实例化公共类_Java_Access Modifiers - Fatal编程技术网

Java Can';t在同一个包中实例化公共类

Java Can';t在同一个包中实例化公共类,java,access-modifiers,Java,Access Modifiers,所以我把这个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"; protecte

所以我把这个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

删除类B中的import语句。您不需要从同一个包中导入。

您有两个主要方法,您应该只有一个用于启动程序的方法,请尝试在be中创建一个对象或任何您想首先运行的类:

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

问题是你编译错了。因为您使用的是包,所以在编译时需要在包之外

因此,不是
javacb.java

创建一个名为与包名相同的文件夹/目录,即
alphabet
,并将java文件移动到其中


使用
javac alphabet/B.java

是否出现编译错误?如果是,它会说什么?\u A=“Package Private A”;这是正确的吗?你怎么知道它不工作?我没有看到任何来自类的输出删除导入statement@KonstantinosChalkias是的,这是一个有意义的编辑,这是我最初写的,但是当我得到
找不到符号
错误时,我输入了导入。现在就把它删除了,并且发布了一些不重要的错误。你可以有很多你喜欢的主要方法,它们不会导致这个问题。马上!谢谢,我知道事情很简单。