• ベストアンサー

Javaにおける名前空間とは?

先輩にJavaを教えてもらったとき、パッケージによって分けられている クラスの名前の集まりを「名前空間」と呼ぶ、って 習ったんですが、調べようとしてもなかなか参考になる サイトがありません。 XMLやC言語だと検索ヒットしますが、なんだか意味が違う… しかもXML、C言語ともに意味が違うような気がします。 Javaも独自の意味を持ってるのかな? 教わった内容自体は正しいのでしょうか?

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

  • ベストアンサー
  • ribisi
  • ベストアンサー率28% (247/864)
回答No.1

名前空間って、不思議な言葉ですよね。 インターネットでも使われている言葉ですが、 全部同じことを差していると思うので、 概念として説明してみます。 簡単に言うと、ある特定の一つの名称が、一つの事柄を指す 領域のことをいいます。 例えば、「本町」という地名があったとします。 これは「町村」という名前空間における名称です。 その上位の「市・区・郡」という名前空間における名称「朝日市」を 付け加えて、「朝日市本町」とします。 さらに上位の「都道府県」という名前空間における名称「東京都」を 加え、「東京都朝日市本町」とし、同様に「日本国」を加えると、 「日本国東京都朝日市本町」となって、全世界においても、この名称は ただ一つの町を指すことになります。 オブジェクト指向の特徴を生かしたり、インターネットで特定のURLを ある規則性に基づいて名付けたりするときには、その「モノ」が、どこに 所属しているのかを示すため、 また、その所属内でその名前を使うと、その「モノ」が必ず特定できるように するために、こうした階層的な名前の付け方をするわけです。 こんな感じで参考になりますでしょうか?

noname#62349
質問者

お礼

回答ありがとうございます。わかりやすかったです。 なるほど、本町って住所は日本中にありますものね。 それを一意に表すために所属名を付けるってことですね。 考え方はわかりました。そして 自分なりにもちょっと調べてみました。 Javaではパッケージ単位でクラスが分けられて いるので、そのパッケージ名をドメイン名を使って世界一意 の名前にしています。 Cなどはパッケージの概念がないため、おそらくURLを 使ってクラス名を切り分け、世界一意の名前空間にしてるのかな?? CやXMLの経験がないので断定できませんが。 それで他の言語の名前空間を調べると、Javaとは全然違う気がして 意味不明でした。 でも結局目的は一緒だったということがわかって すっきりしました。 どうもありがとうございました。

関連するQ&A