Чтение онлайн

на главную

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

// package_samples.java

package samples.on; // отображает прямо в папку, где находится файл класса

public class Packaging {

 int x;

 public class Internal {

// находится автоматически в том же пакете

 }

 public static void main(String args[]) {

 }

}

class Internal {

 // находится автоматически в том же пакете

}

Примеры

того, как этот код может выполняться, приведены ниже. Это, конечно, предполагает, что файл класса был сделан доступным для JRE:

□ Из командной строки:

java samples.on.Packaging

□ Как непосредственная ссылка в коде:

// Referencer.java

public class Referencer {

 samples.on.Packaging pack = new samples.on.two.three.Packaging;

□ Используя директиву

import
, можно опустить полностью квалифицированные имена пакетов, поэтому
Referencer
запишется как:

// Referencer.java

import samples.on.*;

public class Referencer{

 Packaging pack = new Packaging;

}

Помещение класса в пространство имен достигается в C# с помощью ключевого слова

namespace
с идентификатором и заключением целевого класса в скобки. Вот пример:

// namespace_samples.cs

namespace Samples.On {

 using System;

 public class Example {

public Example {

}

 }

}

Преимущество использования скобок для явного ограничения пространства имен состоит в том, что это задает определенный пользователем тип в реальном классе, определенном в файле, а не в самом файле. В Java файлы и папки косвенно представляют структуры языка, так как они аналогичны классам и пакетам, содержащим эти классы. В C# файлы не связаны принудительно с чем-либо, поэтому они становятся местом, где располагается определение класса, а не частью какой-либо структуры языка. Пространства имен также не связаны с папками. Следовательно, в одном файле можно ввести несколько пространств имен без всяких ограничений. Можно, например, добавить определение нового класса и поместить его в новое пространство имен в том же файле и по-прежнему оставаться в границах языка:

// namespace_samples.cs

namespace Samples.On {

 using System;

 public class Example {

public Example {

}

 }

}

namespace Com.Cslib {

 using System;

 using System.Collections;

 public class AddLib {

public AddLib {

}

public int operationAdd(int a, int b) {

return a + b;

}

 }

}

Пространства имен вводятся с помощью директивы

using <namespace name>
,
где
<namespace name>
является именем пространства имен. В C# не требуется использовать
*
, так как директива
using
неявно импортирует все элементы указанного пространства имен. Другим преимуществом является то, что пространства имен могут быть добавлены исключительно в конкретный класс. Хотя классы
Example
и
AddLib
выше определены в файле
namespace_samples.cs
.
Example
не имеет доступа к пространству имен
System.Collections
, несмотря на то, что
AddLib
его имеет. Однако инструкция
import
из Java не является специфической для класса. Она импортирует указанные элементы в файл. Вновь обратимся к
х.java
.

// х.java

public class x {

}

class у {

}

class z {

}

Если добавить инструкцию импорта, такую как

import java.util.Hashtable
, все классы, определенные внутри этого файла, будут иметь доступ к классу
Hashtable
. Код ниже будет компилироваться:

// x.java

package samples;

import java.util.Hashtable;

public class x {

 Hashtable hash = new Hashtable;

}

class у {

 Hashtable hash = new Hashtable;

}

class z {

 Hashtable hash = new Hashtable;

}

Пространства имен можно также определять внутри другого пространства имен. Этот тип гибкости недоступен в Java без создания подкаталогов. Приведенное выше пространство

Com.Cslib
можно расширить следующим образом:

namespace Com.Cslib {

 using System;

 public class AddLib {

public AddLib {

}

public int operationAdd(int a, int b) {

return a + b;

}

 }

 namespace Ext {

public class AddLib {

public AddLib {

}

public int operationAdd(int a, int b) {

return a + b;

}

}

 }

}

Пакет Java

com.javalib
можно расширить, чтобы отобразить приведенный выше код, создав новую папку
\EXT
в каталоге
com\javalib
. В этой папке создается файл исходного кода
AddLib.java
следующим образом:

package com.javalib.ext;

public class AddLib {

 public AddLib {

Поделиться:
Популярные книги

Мимик нового Мира 8

Северный Лис
7. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 8

Отмороженный 4.0

Гарцевич Евгений Александрович
4. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Отмороженный 4.0

Младший научный сотрудник 2

Тамбовский Сергей
2. МНС
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Младший научный сотрудник 2

Измена. Мой непрощённый

Соль Мари
2. Самойловы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Мой непрощённый

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

"Малыш"

Рам Янка
2. Девочка с придурью
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Малыш

Кодекс Охотника. Книга XVIII

Винокуров Юрий
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVIII

Невеста напрокат

Завгородняя Анна Александровна
Любовные романы:
любовно-фантастические романы
6.20
рейтинг книги
Невеста напрокат

Отмороженный 3.0

Гарцевич Евгений Александрович
3. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный 3.0

Законы Рода. Том 3

Flow Ascold
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Виконт. Книга 1. Второе рождение

Юллем Евгений
1. Псевдоним `Испанец`
Фантастика:
фэнтези
боевая фантастика
попаданцы
6.67
рейтинг книги
Виконт. Книга 1. Второе рождение

Мерзавец

Шагаева Наталья
3. Братья Майоровы
Любовные романы:
современные любовные романы
эро литература
короткие любовные романы
5.00
рейтинг книги
Мерзавец

Совпадений нет

Безрукова Елена
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Совпадений нет

Сбой Системы Мимик! Академия

Северный Лис
2. Сбой Системы!
Фантастика:
боевая фантастика
юмористическая фантастика
5.71
рейтинг книги
Сбой Системы Мимик! Академия