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



мист не может создать об®ект класса Class (правда, существуют и

другие  классы  с этим свойством). Ссылки на об®кт класса Class

можно получить с помощью метода getClass, определенного для об-

®ектов класса Object.

Об®екты класса Class используются для получения во время выпол-

нение информации о "классовых" свойствах  об®екта.  К  об®ектам

класса Class, помимо прочих, применимы следующие методы:

1    public native String getName();

2    public native Class getSuperclass();

3    public static native Class forName(String className)

         throws ClassNotFoundException;

Метод forName позволяет получить ссылку на класс по его имени.

Описатель  native  свидетельствует о том, что метод реализуется

средствами, внешними по отношению к 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, специально предназ-

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