2016-07-03 44 views
-3

我對Java相當陌生,每當我們在學校編寫程序時,我們都將每個類放在一個單獨的java文件中,但我不記得爲什麼會這樣(如果甚至有原因的話)。現在我正在回顧我的筆記,並試圖「理解」它是如何工作的。不同的類需要在不同的java文件中嗎?

這是必要的嗎?爲什麼?此外,是否存在文件存儲位置的區別 - 例如,在同一個目錄中?

E.g.如果我們有一個'Vehicle'類和一個'Car'類擴展'Vehicle',我們是否需要分別在java文件'Vehicle.java'和'Car.java'中保存'Vehicle'和'Car',或者可以兩個類都保存在(比如說)'Test.java'中?

複製免責聲明:我的問題不同於this one,像我詢問是否可以把多個類在一個java文件;我特別感興趣的解釋,即爲什麼它是/不可能的。我沒有興趣在什麼方法被調用(鏈接的問題,只是說:「這是必要,現在什麼叫?」):我的問題是比這更基本。

+1

公共課需要在不同的文件中 – Li357

+3

相關的http://計算器。com/questions/2336692/java-multiple-class-declarations-in-one-file – Tunaki

+0

@DVers,請解釋一下,如果我可以編輯這個問題以使它更適合網站。我無法通過搜索互聯網和計算器找到答案。 – Szmagpie

回答

5

可以在一個.java文件中放置多個類。不過,這是一個壞主意。這裏的原因:

package foo.bar; 

public class Foo { } 

public class Bar { } 

包含上面的代碼的源文件,是不會編譯,因爲每個java文件只能包含一個公共class/interface/enum(順便說一句,這些被稱爲「類型「S)。因此,你必須這樣做,讓他們在同一個文件:

package foo.bar; 

public class Foo { } 

class Bar { } // Not public 

或者這樣:

package foo.bar; 

class Foo { } // Not public 

public class Bar { } 

現在,這裏是缺點:如果本次非公開類型包含一切有用的東西(如在一個正常的分佈產生隨機數的方法),也不會是什麼,是不是在叫foo.bar包訪問!

此外,它更易於管理的小源文件。


此外,有沒有什麼地方的文件都應當存儲-e.g區別。在同一目錄

是 - 這取決於封裝名稱。例如,包foo.barfoo.bazfoo.quxbar.foobar.bazbar.qux看起來像一個普通的源文件夾,這些子文件夾(我們稱之爲src):

./src/ 
L___ ./src/foo/ 
| L__ ./src/foo/bar/ 
| L__ ./src/foo/baz/ 
| L__ ./src/foo/qux/ 
L___ ./src/bar/ 
| L__ ./src/bar/foo/ 
| L__ ./src/bar/baz/ 
| L__ ./src/bar/qux/ 

當應用了此邏輯java.lang.Object(假設源文件夾中仍稱src),你會得到這樣的:

./src/ 
L___ ./src/java/ 
| L___ ./src/java/lang/ 
| | L___ ./src/java/lang/Object.java 
相關問題