2011-10-26 64 views
0

我是Java noob。編寫Java類以在另一個Java類中使用

這裏就是我想要做的事:

//File 1 
public class Class1 
{ 
    //....does some stuff 
} 

//File 2 
public class Class2 
{ 
    //..also does some stuff including: 
    Class1 c = new Class1(); 
} 

文件1和文件2是在同一目錄下。

編譯,我使用的命令:

javac Class2.java 

這是給我出錯的形式:

Error: Cannot find symbol Class1 

如何解決這個問題?

+0

他們是否在2個不同的文件?或在一個單一的文件? – raj

+0

如果他們在不同的文件,但同一個目錄,你不需要導入 - 同封裝類神奇可用。如果它們不在默認包中(不包含'package'聲明),那麼您需要使用完全限定的類名(包括整個包)或通配符導入。 –

+0

你在使用一些IDE嗎? –

回答

0

如果兩個文件Class1.javaClass2.java是在同一個目錄更,(假設你已經聲明瞭你想使用的類),你根本不需要做任何導入來使用另一個; Java會自動找到其他類。

所以在Class2.java你可以簡單地做:

public class Class2 { 
    void someMethod() { 
     Class1 c = new Class1(); 
    } 
} 
0

假設它們位於同一個文件夾中,則不必導入,如果它們不是,那麼您需要指定像import java.util.Scanner;這樣的包。在Java中,你不需要擴展名後綴。

你用什麼來編寫你的代碼?

+0

實際上,這是不正確的。你可以在一個文件中擁有多個類,只是它們中只有一個可以是公共的,而且必須與文件的名稱相匹配。 – WirthLuce

+0

@WirthLuce我認爲他們必須被嵌入到主類中,儘管我從來沒有在沒有嵌入的文件中編寫第二類。 –

+0

是的,它實際上並不是非常有用(而且國際海事組織相當醜陋),但這只是我從我的一位教授那天拿起來的一些瑣事。支持它的理由是它不會訪問文件中公共類的私有成員。 – WirthLuce

0

對於在一個文件中使用多個類來看看這個tutorial

如果你是在兩個不同的文件編寫的類和他們在同一個包不需要導入它們才能使用它。但是,如果您手動編譯它們(使用命令提示符),請確保已編譯所有.java文件。否則,你會得到錯誤。

如果你在不同的軟件包中編寫它們,請確保這些類是公開的以便使用它們。是的,在這種情況下,您必須導入包含您要使用的類的包。如果您使用的是命令promt,請再次確保所有類都已編譯。

我的建議是一個很好用的IDE(有很多:))做你的代碼,因爲他們幫助你比我們做的:)

0

在基類,

package ABC; 

public class PQR { 

// Do stuff 

} 


import ABC.*; 

class XYZ { 
// Use the PQR class method 
} 
0

不知道我理解的問題 - 你想使用一個內部類(一個類定義中另一個類定義)還是這些類是分離的和獨立的?需要導入來定義您可以訪問的包/類,默認情況下,同一包中的包可用。因此,如果這些包裝在同一個包裝中,則不需要任何進口。另外,這兩個類都需要彼此可見。當你說它不起作用時,你會得到什麼錯誤?

一種使用內部類的方法是例如outer.new Class1()(其中outer是封裝Class1的類的對象)。如果這些不是內部類,它們需要位於單獨的.java文件中。

順便說一句,它總是建議提供訪問修飾符(公共,私有,保護)明確。

用錯誤信息填寫全部代碼將幫助我給出更好的答案...

相關問題