お前が課長に
「あ~チミチミ、佐藤さんにこの仕事依頼しといて。シクヨロ!」とか言われても
「え?誰?どこの佐藤さんっすか??佐藤とかいっぱいい過ぎてマジわかんねっすけどwww」てなるっしょ?
「つかえねーな、空気読めよ。ブラック産業::社畜事業部::第3課::佐藤さんだよ!」って言われたら
「りょーかいっす!」ってなるじゃん
この「ブラック産業」とかってのが名前空間ってヤツな。
名前空間は階層化もできたりするから「ブラック産業::社畜事業部::第3課」と「ブラック産業::人事部」の両方に「佐藤さん」がいても区別できるわけさ。これが名前空間ってやつ。簡単っしょ?
こういうふうに名前空間ってやつでクラスを定義しとけば同じ名前がかぶってても大丈夫なんよ。
あと、課長に「おう、これから俺が仕事振るときに佐藤さんつったら第3課のことだかんな!?」
つって言われたとするじゃん。そういう風に名前空間を固定すんのがusing宣言ね。
「課長が宣言したんすから、これから佐藤つったらその人の事と思って動くから、他の課の佐藤とかしらねーから」っつー感じで動けばいいって訳よ。
いちいち長い呼び方しなくて済むから楽っしょ。
おk?
たとえばある学校の1年1組に「佐藤Aさん」、1年2組に「佐藤Bさん」がいるパターンを考えてみます。
このとき、1年1組の授業で「佐藤さん」といえば自動的に佐藤Aさんを指し、1年2組の授業で「佐藤さん」といえば自動的に佐藤Bさんを指す、というのが一般的だと思います。
ところがこれが1年1組と1年2組の合同授業で「佐藤さん」と呼びかけるとどちらの佐藤さんを指しているのか判別がつかないわけで、その場合は「佐藤Aさん」とフルネームで呼ぶか「1年1組の佐藤さん」と呼ばないと明示的に佐藤Aさんのことだ、とわからなくなるわけです。
このときの「1年1組」「1年2組」という分類のことを名前空間と呼ぶ、というところでしょうか。
プログラム上での説明は匿名回答1号さんのリンクに任せます。
確かこんな説明をしているページがどこかにあったと思うのですが…。