Определение пространств имён
Пространствоа имён содержат одну величину, Uniform Resource Identifier (URI), также называемую именем пространства имён. URI обеспечивает уникальность определения пространства имён.
Создать пространства имён путём обьявления определения пространства имён можно одним из двух способов. Можно либо определить пр.имён явно указав URI, либо не указывая URI. Пример явного указания URI:

Код:
namespace flash_proxy = "http://www.adobe.com/flash/proxy";
URI служит уникальной идентификационной строкой для этого пр.имён. Если не указывать URI, то компилятор создаст внутреннюю уникальную идентификационную строку вместо URI. Внешний доступ к этой внутренней строке в этом случае закрыт:

Код:
namespace flash_proxy;
Определив пр.имён, указывая URI или не указывая, это пр.имён не может больше быть переопределено в данных пределах (in the same scope). Попытка определить уже определённое ранее пр.имён приведёт к ошибке компилятора.
Если пр.имён определено внутри пакета или класса, оно не видно для кода снаружи пакета или класса, если соответствующий спецификатор доступа не был использован. В следующем примере пр.имён flash_proxy определено внутри пакета flash.utils:

Код:
package flash.utils
{
namespace flash_proxy;
}
Слудующий код использует атрибут public для того, чтобы пр.имён flash_proxy было видно для кода вне пакета:

Код:
package flash.utils
{
public namespace flash_proxy;
}
Применение пространств имён
Применение пространства имён подразумевает под собой помещение определения в пространство имён. Определения, которые могут быть помещены в пр.имён, включают функции, переменные и константы(нельзя поместить класс в собственное пр.имён).
Рассмотрим, к примеру, функцию, объявленную с использованием атрибута доступа public. Эта функция помещается в пр.имён public, что делает функцию доступной для всего кода. После определения собственного пр.имён, можно использовать его также, как используется атрибут public, и определение будет доступно коду, который может ссылаться на ваше пр.имён. Например, после определния пр.имён example1, можно добавить метод myFunction() используя example1 как атрибут:

Код:
namespace example1;
class someClass
{
example1 myFunction() {}
}
Определение метода myFunction(), с использованием пр.имён example1 как атрибута, означает, что метод принадлежит пр.имён example1.
При применении пр.имён следует помнитьследующее:
1.) Только одно пр.имён может быть применено к каждому обьявлению
2.) Нельзя применить пр.имён сразу к нескольким определениям за раз. Другими словами, если вы хотите применить пр.имён к десяти различным функциям, вы должны будете добавить атрибут пр.имён к каждому из десяти определений функций.
3.) При использовании пр.имён, нельзя вместе с пр.имён указывать спецификатор доступа, т.к. пр.имён и спецификаторы доступа являются взаимоисключающими. Другими словами, нельзя объявить функцию или свойство как public, private, protected или internal вместе с применением пр.имён.
Обращение к пространствам имён
Нет необходисмости в явном обращении к пр-ву имён когда используется метод или свойство, объявленные с помощью какого-либо пр.имён контроля доступа, т.е. с помощью атрибутов public, private, protected и internal. Доступ к этим специальным пр-вам имён контроллируется по контексту. К примеру, определения, помещённые в пр-во имён private автоматичеки доступны коду внутри данного класса. Для пр-в имён, которые вы определяете сами, однако, такой зависимости от контекста не существует. Для того, чтобы использовать метод или свойство, помещённые в ваши пр-ва имён, нужно ссылаться на эти пр-ва имён.
Ссылаться на пр-ва имён можно с помощью директивы use namespace или же определяя имя пр-вом имён используя именной спецификатор (:

пунктуатор. Ссылка на пр-во имён с помощью директивы use namespace «открывает» пр-во имён, так что она может быть использована для всякого идентификатора, который не квалифицирован. Например, если определено пр-во имён example1, то доступ к именам в этом пр-ве имён можно осуществлять при помощи use namespace example1:

Код:
use namespace example1;
myFunction();
Можно открывать несколько пр-в имён за раз. После того как вы открыли пр-во имён с помощью use namespace, оно остаётся открытым на протяжении всего блока кода, в котором оно было открыто. Нельзя явно закрыть пр-во имён.
Наличие более одного открытого пр-ва имён, однако, повышает вероятность конфликтов имён. Если вы предпочтёте не открывать пр-во имён, то можно избежать использование директивы use namespace квалифицируя имя метода или свойства пр-вом имён квалифицирующим именным пунктуатором:

Код:
example1::myFunction();