• ベストアンサー

言語[C#、Java]..クラスの扱い方の違い[ファイル名とpublicなクラス名について]

C#とJavaでのクラスの扱い方の違うであろうことに困惑しています。 Javaの場合では、publicなクラス名とJavaファイル名(クラスのファイル名)を一致させる。というのがきまり事だったかと思います。 ですが、 C#の場合では、publicなクラス名とクラスファイル名を一致させなくても動作しています。 C#でのクラス名とクラスファイル名のしばりは何もないのでしょうか? ご存知の方、助言宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 どちらかというと、Javaのように「ファイル名とclass名との間に縛りがある」言語のほうが珍しいと思うので。 記憶しているかぎりでは、C#は「自由に」ファイル名をつけられた記憶があります。

yamachan_tomo
質問者

お礼

そうなんですか。 未だ、Javaしかやったことがなかったため、 知りませんでした。 ご回答ありがとうございます。

その他の回答 (2)

  • dekopa-
  • ベストアンサー率42% (161/378)
回答No.3

まあ、Javaの場合packageとディレクトリ構成が一致していたりしますし。 クラスの位置を特定するのに、Javaのように格納位置で特定させるか、C#のようにアセンブリ等外部ファイルに記録するか、の違いですね。

yamachan_tomo
質問者

お礼

そうですね、Javaだとディレクトリ構成とクラス格納場所は一致してします。 ご回答ありがとうございます。

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

> C#でのクラス名とクラスファイル名のしばりは何もないのでしょうか? ないですね。C++もないです。 っていうか、#1の方も書かれているように、Javaの方が稀。

yamachan_tomo
質問者

お礼

了解です。 ご回答ありがとうございます。

関連するQ&A

  • C言語からjavaを呼び出したい

    C言語からjavaを呼び出したいのでjniを使うことにしました。 各言語のソースはWebで見つけたサンプルを見ながら何とか作成し、各々コンパイルまで終わったのですが、javaのオブジェクト(?)をどこに置いたら良いのかさっぱりわかりません。 java使いの人達には常識の話だと思いますがjavaはサーブレットしか作ったことが無くどうしたものかと困っています。 分からないのは次の2点です。 1.classファイルのままでも良いのかjarにしないといけないのか? 2.どこに設置したら良いのか? これまでやったこと 1.javaのソースを作成しコンパイルしました(classファイルのままです) 2./etc/profileに次のコマンドを追加しました。 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/java/jdk1.7.0_03/jre/lib/amd64/server export LD_LIBRARY_PATH 3.C言語のソースを次のコマンドでコンパイルしました。 % gcc -I/usr/java/jdk1.7.0_03/include/ -I/usr/java/jdk1.7.0_03/include/linux -L/usr/java/jdk1.7.0_03/jre/lib/amd64/server -ljvm -lpthread jnitest.c -o jnitest 4.javaモジュールの設置←これがわかりません 初歩的な質問で申し訳ありませんがご教示下さい。

    • ベストアンサー
    • Java
  • ソースファイルの名前=クラスの名前?

    java初心者です。よろしくお願いします。 「javaのソースファイルの名前とクラスの名前は一致させる」という記述を入門書の最初の方では必ず書いてあるのですが、もう少し読んでいくと一つのソースファイルの中にいくつかクラスを作るという段階になると思うのですが、これは「public class」のクラスの名前をソースファイルの名前と一致させるということでしょうか?(つまり、public classは一つのソースファイルに一つしか書かない、ということでしょうか?) 多分違うような気が何となくするのですが、頭がこんがらがっています。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 私の場合、C++とJavaのどちらの言語でクラス取るべき?

    今度、データ構造のクラスを取ります。 でもその言語がC++とJavaで選べます。 私自身はBASIC, C, Fortran, Assembly, C++と習ってきました。 C++の初級は余裕だったのですが(Cの知識が結構応用できた)、 中級でのclassの概念(base, derivedなど)は 今一つ理解できてないと思います(グレードはBでした)。 例文があれば、いろんなところから貼り合わせ、なんとか動くようには出来るレベルです(^^ゞ 教授は「大丈夫、C++を理解していればJavaは出来る」と言いますし、 ここのOKWebの過去ログにもそんな記述があるのですが、 未知の言語(Java)で初級コースならまだしも データ構造(配列やらリストやら)を扱うっていうのは厳しいような…うーん…。 …と言いつつもC++でも自信ないし…うーん…。 Javaは人気があるのは知っていますし、新しい言語に興味もあるのですけど…うーん…。 最近、初級コースはJavaに切り替わったそうです… でも折角C++で必修科目を埋めたのにJavaで取り直すのはちょっと…うーん…。 こんな私はどちらの言語でデータ構造のクラスを取ればよいでしょうか? 両方の言語をご存知の方、アドヴァイスをください。

  • JavaのクラスをCアプリケーションから起動。。?

    Javaにて、引数として渡されたURLに  接続するクラスを作成します。 それをCで作ったアプリケーションから、  URLを引数として渡し、起動させるようなものを  考えています。 この時、C言語からJavaで作った上記のようなクラスを  呼び出すにはどうしたらよいのでしょうか。 また、この場合のJavaの処理として、  指定URLに対して、GETではなく、POSTを行うには  どのようにすれば可能でしょうか。 具体的な方法、参考になる文献など、  ご存知の方、いらっしゃいましたら、ご教授願います。

    • ベストアンサー
    • Java
  • javaでc言語を実行

    java初心者です 10年以上前にC言語で作成されたプログラムを,GUIの部分だけ JAVAで組み直したいと思っております そこで質問なのですが、例えばC言語で作成されたHELLO WORLDを表示するような 実行ファイルをJAVAで作成したボタンで実行が可能かどうか。 もし可能ならば、その方法について教えて頂きたいのですが よろしくお願いします

  • SunのJavaからMSのJavaにしかないクラスを利用したい

    初めて投稿させていただきます。 私は、EXEを作れる、DLLに触れるというメリットでMicrosoft SDK for Java 4.0を使っていたのですが、2007年にMicrosoftが完全にサポートを打ち切ってしまうことからSunのJDKに開発環境を移行しようと考えています。 そこで、MSが提供していた独自クラスをSunのJavaで使えないかと思って調べています。 具体的にはまず、MS Javaで使われているクラスファイルを吐き出すためにコマンドプロンプトで > clspack /auto として、classes.zipを作成しました。これをSunのJavaをコンパイルするときに > javac -cp C:?WINDOWS?Java?Classes?classes.zip hoge.java > javac -Xbootclasspath C:?WINDOWS?Java?Classes?classes.zip hoge.java とすると、コンパイルは通るのですが、 > java hoge > java -cp C:?WINDOWS?Java?Classes?classes.zip hoge > java -Xbootclasspath C:?WINDOWS?Java?Classes?classes.zip hoge 等として、実行しようとすると次のようなエラーが表示されてしまいます。 Exception in thread "main" java.lang.NoClassDefFoundError: com/ms/win32/User32 at hoge.main(hoge.java:4) Exception in thread "main" java.lang.NoClassDefFoundError: hoge Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/security/ProtectionDomain ちなみに、hoge.javaはMSのクラスが使えるかを確認するために作ったサンプルです。ソースコードは以下のような内容です。 import com.ms.win32.*; class hoge{  public static void main(String[] args){   User32.MessageBox(0,"Hello.","Java!!",0);  } } MSの提供しているクラスを使うことは出来ないのでしょうか?また、MS以外のものでデバイスにアクセスすることを可能にするクラスは提供されていないでしょうか?

  • 自作のクラスファイルがインポート出来ない

    ご質問させて頂きます。 自作のクラスファイルがインポート出来ないので困っています。 自作のクラスファイルがある場所 c:\ja クラスファイル名 TestMap.class juko.javaにこのようにインポートして、 import TestMap.*; 以下のようにインポートをしようとすると、 C:\ja>javac -d c:\ja juko.java 以下のようなエラーになってしまいます。 ----------------- jukou.java:7: パッケージ TestMap は存在しません。 import TestMap.*; ----------------- なお、環境設定も以下のように変更してみましたが駄目でした。 CLASSPATH=C:\ja;.;C:\j2sdk1.4.1_02\lib\tools.jar;C:\Program Files\Allaire\JRun\l ib\ext\servlet.jar;C:\mysql-connector-java-3.1.0\mysql-connector-java-3.1.0-alph a-bin.jar; ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • オンラインゲームを開発したいのですが、JavaとCのどちらが良いでしょうか。

    私はこれからJavaかCのどちらかを学ぼうと検討している者です。中には「Cから学べば良い」と言う人もいます。しかし、逆に「Javaを学べば良い」と言う人もいます。それはどうしてでしょうか。私はそのことをさっぱり理解できません。 オンラインゲームを開発する際、JavaとCのどちらがゲーム開発に向いていますでしょうか。Webブラウザ上で動作する場合ならJava、GUIならCが向いていると思いますがどうでしょうか? 個人の趣味として、CとJavaのどちらをやると自らアイデアで多くのアプリケーションが容易に開発することができますでしょうか。 やはり、需要があるのはJavaの方ですが、Javaを学んだ方が企業の求人に有利なのでしょうか。

    • ベストアンサー
    • Java
  • JNAでc言語ファイルの読み込み方が分かりません

    JNAでc言語ファイルの読み込み方が分かりません JNAを使用して、javaからcを読み込み動作するプログラムを作っています。 なんとなく定義は分かってきたのですが、 javaのソースコードに CLibrary.INSTANCE.printf(); のように、c言語を書き込んでいる状況なのですが、 JNAを利用した.javaファイルから.cファイルを読み込む方法はありますか? c言語の場合、.cファイルごとに分割された関数をmainが呼び出すとき、 extern void Sample(); とプロトタイプ宣言の後に Sample(); で呼び出せるみたいなので、 これを使って、 CLibrary.INSTANCE.extern void Sample(); とやってみましたが、コンパイルできませんでした;; 他にやり方がありますか? 知ってる方がいらっしゃいましたら、教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaでscalaのクラスを使う

     Scala初心者です^^  Scalaで作ったクラスをJavaで使おうとしています.  しかしなかなかうまくいかなくて…  ソースを下に書いておきます. [ap/hello.scala] class hello(str2: String){ val str = str2 def say(){ println(str) } } [ap/start.java] public class start{ public static void main(String[] args){ hello h = new hello("Hello!"); h.say(); } }  helloクラスのコンストラクタを用いて指定した文字列を helloクラスのsayメソッドで標準出力するだけの簡単なクラスなのですが, うまく実行できず… Exception in thread "main" java.lang.NoClassDefFoundError: ap/start/class Caused by: java.lang.ClassNotFoundException: ap.start.class at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Kazus-MackBookPro:ScalaLearning macuser$ java ap/start Exception in thread "main" java.lang.NoClassDefFoundError: ap/start (wrong name: start) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) というエラーが出てしまいます.    どこが悪いかわかる方いらっしゃいませんか?  それとも,JavaではScalaで作った.classファイルは使うことができないのでしょうか?  Scalaはまだ覚えて2週間なので,まだ完全に理解できていません><    よろしくお願いします

専門家に質問してみよう