Eclipseでは、.javaファイル名はクラス名と同じである必要があります。いずれにせよ、それはEclipseだけに当てはまりますか?
javaファイルは、を含むパブリッククラスと同じ名前である必要があります。
mainメソッドの場合、Cのmain関数のように見えますが、問題は、両方に独自のmainメソッドを持つ2つのクラスがあり、それらをリンクできる場合はどうなるかということです。
はい、同じプロジェクトにメソッドを持つ2つのクラスstatic void main(String[] args) {...}
を含めることができますが、プロジェクトのメインクラスは1つだけであり、マニフェストファイルで宣言してどちらにするかを決定する必要があります。
これについてもっと読む:
さらに、1つの.javaファイルに2つのクラスを書き込むことはできますか?
はい、できます。ただし、ファイル内に1つのクラスがあり、そのクラスの名前がファイルの名前と同じである場合に限ります。
TheClass.javaファイル
package edu.home.bean;
public class TheClass {
class SomeClass {
}
}
class AnotherClass {
}
編集:
クラスへのパブリックアクセスを定義しない場合、宣言されている場所に応じて、クラスが持つdefault
か、アクセスする可能性があります。private
上記の例でSomeClass
は、にアクセス権があり、private
によってのみアクセスできますが、同じパッケージ内の任意のクラスからアクセスできます。つまり、とは異なるパッケージ内のクラスはアクセスできません。TheClass
AnotherClass
edu.home.bean
AnotherClass
package edu.home.control;
public class ControlClass {
//this line compiles fine
private TheClass x;
//compilation error, it can't access for being in a different package
private AnotherClass y;
//compilation error, it can't access because its scope works only in TheClass
private SomeClass z;
}
WindowsでEclipseを使用していますが、Linuxバージョンと同じですか?
Javaの良いところは、コードがプラットフォームに依存しないことです(CやC ++とは異なります)。そのため、Java仮想マシン(JVM)がオペレーティングシステムにインストールされている限り、コードをWindowsからLinuxに、またはその逆に移植できます。 Javaプロジェクトを実行/開発したい。
パッケージの場合、私の本には、パッケージは一種のディレクトリであると書かれています。したがって、ファイルが属するパッケージを指定するには、「packagemy_pack」とだけ言う必要がありますか?
はい、その本は正しいです。MyFirstJavaProjectなどのJavaプロジェクトがある場合は、ソースフォルダーとそのフォルダー内のパッケージを設定します。パッケージは、ソースフォルダーのサブフォルダーになります。例:
Eclipseのプロジェクト構造:
+ MyFirstJavaProject
+ src
+ edu.home.bean
+ edu.home.control
+ edu.home.gui
+ another.package
+ MyFirstJavaProject
+ src
+ edu
+ home
+ bean
... class files
+ control
... class files
+ gui
... class files
+ another
+ package
/ src / my_packのようなディレクトリを作成し、その中に.javaファイルを配置する必要がありますか?
手動で行うことも、IDE(この場合はEclipse)にパッケージ内にパッケージやクラスを作成するのと同じくらい簡単に行わせることもできます。
第三に、名前空間とは何ですか?パッケージやクラスとの関係は何ですか?
Javaは名前空間では機能しません。代わりに、パッケージを使用してクラスの管理/関係を容易にします。別のパッケージからクラスをインポートするか(第1の形式)、完全なパッケージ名のクラスを使用することができます(第2の形式)。
最初の形式の例:
package package1;
public class Package1Class {
}
package package2;
import package1.Package1Class;
public class Package2Class {
private Package1Class x;
public Package2Class (Package1Class x) {
this.x = x
}
}
2番目の形式の例:
package package1;
public class Package1Class {
}
package package2;
public class Package2Class {
//look that there is not use of the import statement, however everytime you need
//to call Package1Class, you should provide the full package name
private package1.Package1Class x;
public Package2Class (package1.Package1Class x) {
this.x = x
}
}