- ベストアンサー
Javaにおける名前空間とは?
先輩にJavaを教えてもらったとき、パッケージによって分けられている クラスの名前の集まりを「名前空間」と呼ぶ、って 習ったんですが、調べようとしてもなかなか参考になる サイトがありません。 XMLやC言語だと検索ヒットしますが、なんだか意味が違う… しかもXML、C言語ともに意味が違うような気がします。 Javaも独自の意味を持ってるのかな? 教わった内容自体は正しいのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
名前空間って、不思議な言葉ですよね。 インターネットでも使われている言葉ですが、 全部同じことを差していると思うので、 概念として説明してみます。 簡単に言うと、ある特定の一つの名称が、一つの事柄を指す 領域のことをいいます。 例えば、「本町」という地名があったとします。 これは「町村」という名前空間における名称です。 その上位の「市・区・郡」という名前空間における名称「朝日市」を 付け加えて、「朝日市本町」とします。 さらに上位の「都道府県」という名前空間における名称「東京都」を 加え、「東京都朝日市本町」とし、同様に「日本国」を加えると、 「日本国東京都朝日市本町」となって、全世界においても、この名称は ただ一つの町を指すことになります。 オブジェクト指向の特徴を生かしたり、インターネットで特定のURLを ある規則性に基づいて名付けたりするときには、その「モノ」が、どこに 所属しているのかを示すため、 また、その所属内でその名前を使うと、その「モノ」が必ず特定できるように するために、こうした階層的な名前の付け方をするわけです。 こんな感じで参考になりますでしょうか?
お礼
回答ありがとうございます。わかりやすかったです。 なるほど、本町って住所は日本中にありますものね。 それを一意に表すために所属名を付けるってことですね。 考え方はわかりました。そして 自分なりにもちょっと調べてみました。 Javaではパッケージ単位でクラスが分けられて いるので、そのパッケージ名をドメイン名を使って世界一意 の名前にしています。 Cなどはパッケージの概念がないため、おそらくURLを 使ってクラス名を切り分け、世界一意の名前空間にしてるのかな?? CやXMLの経験がないので断定できませんが。 それで他の言語の名前空間を調べると、Javaとは全然違う気がして 意味不明でした。 でも結局目的は一緒だったということがわかって すっきりしました。 どうもありがとうございました。