Java как центр архипелага - [5]

Шрифт
Интервал

средствами, внешними по отношению к Java-системе (например, пи-

шется на языке C).

            4.1.1.2. Наследование

Модель наследования в языке Java существенно отличается от  мо-

дели  C++.  Во-первых,  в Java нет множественного наследования.

Во-вторых, в языке предусмотрены средства для запрета  дальней-

шего  наследования  (ключевое  слово  final  перед определением

класса). В-третьих, в языке Java присутствует новое по  отноше-

нию к C++ понятие интерфейса.

Интерфейс представляет собой набор описаний методов. Пример:

public interface Verbose {

  public void drawOn (Graphics g);

  public void printOn (OutputStream os);

}

public class Star extends Polygon implements Verbose {

  public void drawOn (Graphics g) {

  // Конкретная реализация отрисовки

  }

  public void printOn (OutputStream os) {

  // Конкретная реализация печати

  }

}

public class Text extends StringBuffer implements Verbose {

  public void drawOn (Graphics g) {

  // Конкретная реализация отрисовки

  }

  public void printOn (OutputStream os) {

  // Конкретная реализация печати

  }

}

public class Blackboard extends Canvas {

  public void drawVerbose (Verbose d) {

    Graphics g = getGraphics ();

    d.drawOn (g);

  }

}

Интерфейс Verbose содержит два метода. Первый предназначен  для

рисования  в  графическом  контексте, второй - для распечатки в

выходной поток.

Класс   Star   предствляет   собой   подкласс   многоугольников

(Polygon).  Помимо  прочего,  мы  хотим  рисовать об®екты этого

класса на доске (Blackboard) и выводить их описание в файл.

Для об®ектов класса Text мы хотим иметь  возможность  начертать

текст на доске и выводить его в файл.

Класс Blackboard - наследник класса Canvas, специально предназ-

наченного  для  рисования.  Как  мы видим, этот класс с помощью

единственного метода справляется с рисованием об®ектов, не име-

ющих общего предка (кроме класса Object).

Таким образом, с помощью интерфейсов можно  компенсировать  от-

сутствие  множественного наследования. В контексте наследования

интерфейс можно рассматривать как абстрактный класс, не  содер-

жащий данных.

            4.1.1.3. Жизненный цикл об®екта

Об®екты создаются с помощью оператора new. Инициализация об®ек-

та  производится  с  помощью соответствующего конструктора. Эти

операции разделить нельзя - за new следует конструктор. Пример.

Point myPoint = new Point ();

Других способов создания об®ектов (кроме  оператора  new)  язык

Java не предоставляет.

Об®ект существует до тех пор, пока на него есть ссылки (то есть

пока  он  прямо или косвенно доступен хотя бы из одной перемен-

ной). В языке отсутствуют  явные  средства  удаления  об®ектов.

После того, как об®ект стал недоступен, он оказывается кандида-

том для утилизации сборщиком мусора.

Об®ект  может  стать недоступным, если хранившей его переменной

присвоено новое значение или если эта переменная перестала быть

доступной (произошел выход из блока). Пример.

  Point p = new Point (100.0, 100.0);

  . . .

  p = new Point (1.0, 1.0);

  // На точку с координатами (100, 100) ссылок больше нет

  {

     String s = new String ("Local string");

     System.out.println (s);

  }

  // На строку "Local string" ссылок больше нет

В момент утилизации об®екта сборщиком мусора будет вызван метод

finalize. Из-за того, что сборщик мусора работает в фоновом ре-

жиме, вызов finalize является асинхронным.

          4.1.2. Примитивные типы данных

В языке Java существует набор встроенных типов данных,  которые

не являются об®ектами. Их не так много.

Представление  чисел  в языке Java фиксировано и, тем самым, не

зависит от аппаратной платформы.

- целые числа:

- - byte - 8 бит,

- - short - 16 бит,

- - int -  32 бита,

- - long - 64 бита.

Все числа со знаком, спецификатор unsigned в языке отсутствует.

- числа с плавающей точкой:

- - float - 32 бита,

- - double - 64 бита.

Представление должно соответствовать стандарту IEEE 754.

- char

Значение типа char есть 16-разрядное число без знака  (диапазон

0-65535).  Кодировка соответствует стандарту Unicode. В резуль-

тате с самого начала закладывается здоровая основа для  решения

проблемы локализации Java-программ.

- boolean

Содержит  значения true и false, которые не могут быть преобра-

зованы в другой тип.

В языке Java, разумеется, присутствуют массивы. Эти массивы ти-

пизированы. Декларация

Point myPoints[];

описывает переменную myPoints как массив об®ектов  типа  Point.

Завести массив определенного размера можно с помощью инструкции

вида

myPoints = new Point[10];

Значения  элементов  массива  при  этом устанавливаются равными

специальной величине null.

Размер массива может быть получен во время выполнения  програм-

мы:

howMany = myPoints.length;

Других структурных типов (не являющихся об®ектами) в языке Java

нет, то есть нет структур, об®единений и т.п. Нет в Java и ука-

зателей.

Отметим,  что  строки  символов  являются об®ектами типа String

(текстовые константы)  или  StringBuffer  (изменяемые  строки).

Пример,

String hello = "Hello world!";

          4.1.3. Пакеты

Классы в языке Java об®единяются в пакеты. Все классы, входящие

в  один пакет, являются дружественными по отношению друг к дру-

гу, то есть имеют взаимный доступ к переменным и методам,  если


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


Фундаментальные алгоритмы и структуры данных в Delphi

Книга "Фундаментальные алгоритмы и структуры данных в Delphi" представляет собой уникальное учебное и справочное пособие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала "Delphi Informant" за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий Delphi».В книге подробно рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.