- 締切済み
ひとつのファイルにクラスは1つ?
こんにちは。C#をやっていた者ですが、プログラミングコンテストに出場するにあたって、Javaを勉強しています。 基本的な部分は同じで、似てる部分も多々あって習得しやすいと思っていたのですが、どうやら細かい違いがあり、悩まされています。 C#では、ひとつのソースファイルに複数のクラスを記述できました。Javaの参考書でもサンプルコードに、 class Point3D{ public double x,y,z; } class example{ public static void main(String args[]){ Point3D p1 = new Point3D(); } } なんてありましたが、どうもEclipseにこれをいれると、 トークン "class" に構文エラーがあります。正しくは @ です と出てきてしまいます。メンバークラスを使えば済む話ですが、参考書にこのように書いてあるのにエラーが出るのはなぜでしょうか?C#だとすっきり通るのですが・・・。 そもそもオブジェクト指向について私はまだ勉強が足りないのでしょうか? ご教授願います。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
なにかエラーメッセージ的に 「;」と「:」を間違えたために発生しているエラーなきがする。
- jjon-com
- ベストアンサー率61% (1599/2592)
> ソースコードは1つしか提出できないプログラミングコンテストでは、 > メンバークラスなどで工夫してやるしかなさそうですね。 Javaでもひとつのソースファイルに複数のクラスを記述できます。 そんなことをしなくても大丈夫ですよ。 ANo.1の指摘はその通りですけれど,今回の質問では, public class Point3D {....} public class example {....} のようにpublicなクラスを1ファイルに複数書いているわけでありませんから, 質問文に提示されたサンプルコードをcopy&pasteしてjavacコンパイルすれば,エラーなく正常に通りますよ。 提示されたエラーメッセージは,行末の;を忘れていたり,開き括弧/閉じ括弧の対応がとれていなかったりしたときなど単純ミスでよく見かけるエラーですよね。
- notnot
- ベストアンサー率47% (4900/10358)
オブジェクト指向の理解とは関係ありません。Javaの仕様の制約です。 Javaでは、publicなクラスは1ファイルに1つしか書けません。
お礼
そうなんですか。ではなぜ私の参考書にはひとつのソースに2つもクラスが入ってるんだろう・・・ あらかじめそこは知ってて、そちらでコードを別ファイルに分けてくださいってことなのかな? 初めて知りました。ありがとうございます。 ソースコードは1つしか提出できないプログラミングコンテストでは、メンバークラスなどで工夫してやるしかなさそうですね。