Java как центр архипелага | страница 7



понятия класса.

            4.1.1.1. Классы

Понятие класса в языках Java и C++ очень близки. Класс является

шаблоном для создания об®ектов; он может содержать данные и ме-

тоды.  Приведем  пример  класса, описывающего точки в двумерном

пространстве (здесь и далее номера строк используются для  пос-

ледующих пояснений и не являются частью Java-программ).

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  нельзя отрывать определение метода (функции) от

описания заголовка. Синтаксическая конструкция class  полностью

включает  в себя всю информацию о классе. В частности, реализа-

ции методов обязаны содержаться внутри этой конструкции.

Для  обозначения  наследования  используется   ключевое   слово

extends (строка 1). Класс Object - это корень дерева наследова-

ния.  В  Java  не бывает классов-"сирот": у всех классов, кроме

Object, есть предшественник. Подробнее наследование и предопре-

деленные классы будут рассмотрены далее.

Режимы доступа к элементам класса (private, protected,  public)

те  же,  что  и  в C++, за одним важным исключением. Если режим

доступа опущен,  предполагается,  что  соответствующий  элемент

доступен в пределах пакета (см. далее).

В строке 9 приведен пример явного вызова одного конструктора из

другого.

Прочие  приведенные выше строки не нуждаются в пояснениях кроме

одной - отсутствующей. В языке  Java  не  бывает  деструкторов.

Причина в том, что управление памятью автоматизировано (в фоно-

вом  режиме  работает сборщик мусора). Для высвобождения прочих

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

finalize.  Этот метод вызывается сборщиком мусора в момент ути-

лизации памяти, занимавшейся об®ектом.

Ключевое слово this (см., например, строки 5 и 9)  используется

для  ссылки на самого себя. Аналогичную роль по отношению к ро-

дительскому классу играет слово super:

1     class ThreePoint extends Point {

2       protected double z;

3       ThreePoint () {

4         super ();

5         z = 0.0;

6       }

7       ThreePoint (double x, double y, double z) {

8         super (x, y);

9         this.z = z;

10      }

11    }

В строках 4 и 8 вызываются конструкторы родительского класса.