ОБЪЕКТНАЯ МОДЕЛЬ ЯЗЫКА JAVA

ОБЪЕКТНАЯ МОДЕЛЬ ЯЗЫКА JAVA. Когда говорят об объектно-ориентированном языке программирования, предполагают поддержку трех механизмов инкапсуляция наследование полиморфизм. Инкапсуляция и наследование в языке Java реализуются с помощью понятия класса. КЛАССЫ. Для создания классов можно использовать только ключевое слово class. Что же касается union, то это ключевое слово в Java не применяется. В языке программирования С описание класса может быть отделено от его определения.

Для Java это не так - описание класса недопустимо. Все методы должны быть определены внутри определения класса. Недопустимо определение вложенных классов. В Java также нет шаблонов. Возможно создавать классы только на базе других классов. Объект класса создается при помощи ключевого слова new, однако невозможно удалить объект явным образом, так как ключевое слово delete языка программирования С в Java не используется.

При определении класса нельзя указать деструктор. Функции удаления объектов Java из памяти выполняет система сборки мусора. Внутри одного исходного файла можно определить только один общедоступный класс public. Все классы в Java наследуются от класса Object, поэтому для любого объекта можно использовать методы этого класса. 1 class Point extends Object 2 private double x 3 private double y 4 Point double x, double y 5 this.x x 6 this.y y 7 8 Point 9 this 0.0, 0.0 10 11 public void setX double x 12 this.x x 13 14 public void setY double y 15 this.y y 16 17 Класс является шаблоном для создания объектов он может содержать данные и методы.

Выше приведен пример класса, описывающего точки в двумерном пространстве. Здесь и далее номера строк используются для последующих пояснений и не являются частью Java-программ. В языке Java нельзя отрывать определение метода функции от описания заголовка. Синтаксическая конструкция class полностью включает в себя всю информацию о классе.

В частности, реализации методов обязаны содержаться внутри этой конструкции. Для обозначения наследования используется ключевое слово extends строка 1 . Класс Object - это корень дерева наследования. В Java не бывает классов- сирот у всех классов, кроме Object, есть предшественник. Режимы доступа к элементам класса private, protected, public те же, что и в C , за одним важным исключением. Если режим доступа опущен, предполагается, что соответствующий элемент доступен в пределах пакета см. далее. В строке 9 приведен пример явного вызова одного конструктора из другого.

Прочие приведенные выше строки не нуждаются в пояснениях кроме одной - отсутствующей. В языке Java не бывает деструкторов. Причина в том, что управление памятью автоматизировано в фоновом режиме работает сборщик мусора. Для высвобождения прочих ресурсов, ассоциированных с объектом, служит специальный метод finalize. Этот метод вызывается сборщиком мусора в момент утилизации памяти, занимаемой объектом. 1 class Point3D extends Point 2 protected double z 3 Point3D 4 super 5 z 0.0 6 7 Point3D double x, double y, double z 8 super x, y 9 this.z z 10 11 Ключевое слово this см например, строки 5 и 9 используется в объекте для ссылки на самого себя. Аналогичную роль по отношению к родительскому классу играет слово super. В строках 4 и 8 вызываются конструкторы родительского класса.

Приведенные примеры показывают, что в языке Java, как и в C , методы могут быть перегруженными, то есть под одним именем могут фигурировать разные методы с разным набором параметров.

Вы не можете определять методы вне тела класса, создавая таким образом глобальные функции. Нет также возможности определения вне класса глобальных данных. Тем не менее, внутри класса можно определять статические методы и поля с помощью ключевого слова static, которые будут играть роль глобальных методов и данных. Пользуясь ключевыми словами static и final, можно определять внутри классов глобальные константы. Если в базовом классе метод определен с ключевым словом final, его нельзя переопределить в дочернем классе, созданном на базе данного метода.

Методы не могут быть определены как inline. Методы Java могут создавать исключения, вызванные возникновением ошибок или других событий. Все исключения должны либо обрабатываться внутри метода, либо описываться в определении метода после ключевого слова throws. 1 public native String getName 2 public native Class getSuperclass 3 public static native Class forName String className throws ClassNotFoundException Как и в C , с помощью ключевого слова static можно определить данные и методы, которые являются общими для всех объектов класса.

Функций, не принадлежащих какому-либо классу, в языке Java не бывает. Следующий пример содержит фрагменты стандартного пакета java.lang. Прокомментируем этот пример с точки зрения отличий Java от C . Строки с 5 по 21 представляют собой инициализацию статических данных класса, которая осуществляется в момент загрузки класса в Java-машину.

По сути этот код играет роль конструктора класса Character. В строках 1 и 3 встречается ключевое слово final. В строке 1 это слово обозначает запрет на наследование от класса Character. В строке 3 его смысл аналогичен описателю const в C . Если слово final использовано в заголовке метода, то данный метод не может быть переопределен в классах-наследниках. Как и в C , в языке Java классы могут быть абстрактными, то есть не до конца конкретизированными. Это означает, что в классе описаны методы, определения которых отсутствуют.

Такие методы как и сам класс должны снабжаться описателем abstract. Абстрактные методы должны конкретизироваться в производных классах. В языке Java имеется предопределенная иерархия классов, содержащихся в пакете java.lang. В этой иерархии несколько особняком стоит класс Class. Программист не может создать объект класса Class правда, существуют и другие классы с этим свойством. Ссылки на объект класса Class можно получить с помощью метода getClass, определенного для объектов класса Object. 1 public final 2 class Character extends Object 3 public static final int MAX RADIX 36 4 static char downCase 5 static 6 char down new char 256 7 for int i 0 i 256 i 8 down i char i 9 10 for int lower a lower z lower 11 int upper lower A - a 12 down upper char lower 13 14 for int lower 0xE0 lower 0xFE lower 15 if lower ! 0xF7 16 int upper lower A - a 17 down upper char lower 18 19 20 downCase down 21 22 public static boolean isLowerCase char ch 23 return upCase ch ! ch 24 25 Объекты класса Class используются для получения во время выполнение информации о классовых свойствах объекта.

К объектам класса Class, помимо прочих, применимы предыдущие методы.

Метод forName позволяет получить ссылку на класс по его имени. Описатель native свидетельствует о том, что метод реализуется средствами, внешними по отношению к Java-системе например, пишется на языке C .