2015-11-07 61 views
2

所以我做了這個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 

編輯:除去import語句仍然得到這些錯誤

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 
+2

您是否收到編譯錯誤?如果是這樣,它說什麼? –

+0

_A =「套餐私人A」;它是否正確? –

+0

你是怎麼知道它沒有工作的?我沒有看到這個類的任何輸出 –

回答

4

由於您的類在包字母,則需要使用此命令行把它們放在一個名爲字母子目錄,然後運行javac從它的父目錄:

javac alphabet/B.java 
+0

現貨!謝謝,我知道這很簡單。 – abhipil

1

刪除類B. import語句你不需要從相同的包中導入。

+0

這是有道理的,這就是我最初編寫的內容,但是當我找到'找不到符號'錯誤時,我將其導入。現在刪除它,並在沒有導入的情況下發布錯誤 – abhipil

-1

你有2種主要的方法,您應該僅是用於啓動程序關閉,嘗試中或任何類創建一個對象,你想先運行:

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(); 
    } 
} 
+1

您可以擁有任意數量的主要方法,而且它們不會導致此問題。 – EJP

4

問題是你正在編譯錯。既然你使用的是軟件包,編譯時你需要在軟件包之外。

所以不是javac B.java

使命名相同的包名稱即alphabet文件夾/目錄和Java文件移動到它。

使用javac alphabet/B.java