Главная страница >> Архив рассылки >> Рассылка №5

Свои отзывы присылайте на bookmans@mail.ru

Главная страница

Рассылка 5. Множественное наследование в Java.

     В Java запрещено непосредственное множественное наследование между классами, то есть у одного подкласса может быть только один суперкласс (в объявлении extends может быть указано имя одного класса). Это ограничение, впрочем, снимается с помощью некоторых приемов, которые мы рассмотрим в этой главе.

5.1 Интерфейсы.

С помощью интерфейсов можно частично решить проблему множественного наследования объектов. Интерфейсы - это своего рода неполные классы: у них отсутствуют переменные представителей, а методы интерфейсов не могут содержать тела. Объявление интерфейса совершается с помощью слова interface:

interface имя_интерфейса {
тип имя_метода1 (тип формальная_переменная1, тип формальная_переменная2...)
...
тип имя_метода2 (тип формальная_переменная1, тип формальная_переменная2...)
тип имя_переменной_типа_final1 = значение;
...
тип имя_переменной_типа_final2 = значение;
}

Объявленные методы отделяются уже не фигурными скобками, а просто точкой с запятой. Все переменные в интерфейсе объявляются типа final. Это значит, что внутри класса мы не можем поменять их значения, поэтому при объявлении переменных в интерфейсах им необходимо присваивать значения.

interface myfirstinterface {
final int x = 4;
boolean method1 (int k);
}

Теперь, чтобы использовать интерфейс в нашем классе нужно воспользоваться оператором implements:

class MyFirstApplet extends java.applet.Applet implements myfirstinterface {

В отличие от суперклассов количество интерфейсов в вызове класса неограниченно. При их вызове из класса нужно не забывать разделять их запятыми.

Аналогично классам и методам существуют встроенные Java-интерфейсы. Характерный пример использования встроенных интерфейсов - обработка событий: нажатие клавиши, кнопки мыши или движение мыши. Обработку событий производят слушатели событий. Для их вызова будем использовать интерфейсы:

class GraphicConvey extends java.applet.Applet implements MouseListener, MouseMotionListener {



Глава 5.2 Абстрактные классы

Абстрактные классы во многом подобны интерфейсам. От обычных классов, они отличаются тем, что у их методов (одного или нескольких) нет операторов тела. Тогда такой метод объявляется абстрактным с помощью слова abstract. Класс, где существует хотя бы один абстрактный метод также должен быть объявлен абстрактным. В Java существует несколько абстрактных классов. Один из примеров - классы по реализации входных/выходных потоков.

Все классы, являющиеся подклассами абстрактного класса, должны дать реализацию (то есть тело) всем абстрактным методам абстрактного класса, или сами должны быть объявлены абстрактными.

Глава 5.3 Создание нового экземпляра класса.

     Одна из возможностей передачи свойств нескольких классов другому классу - это создание экземпляров классов. Тогда возможно будет вызвать методы и переменные этих классов через вызов этих классов. Этот механизм не является в полном смысле слова механизмом наследования, однако он предусматривает передачу свойств одного класса (как бы суперкласса) другому (подклассу).

Чтобы создать экземпляр класса нужно воспользоваться оператором new:

MyNewClass mNewCl = new MyNewClass ();

Переменной mNewCl типа MyNewClass (напомню, что типом любого элемента может быть как встроенный тип, так и имя любого существующего класса).

В одном и том же классе можно создать несколько экземпляров одного и того же класса, присвоив его значения двум или нескольким переменным. В приведенном ниже примере создается два экземпляра класса Thread (подпроцессы):

Thread firstThread = Thread.currentThread ();
Thread secondThread = new Thread (this, "Second Thread");

Теперь чтобы вызвать, например, метод isAlexanderVanin класса MyNewClass (смотрите первый пример), нужно записать следующий код:

mNewCl.isAlexanderVanin ();

Оператор точка служит для отделения имени пакетов от имен вложенных пакетов и классов, входящих в пакет, а также имени класса от имени переменной или метода, принадлежащих этому классу.

Дружественные рассылки:

Lotus Notes 5
Сервис почтовых рассылок CONTENT.MAIL.RU
E-mail:

 




<Наверх> <Предыдущий номер> <Следующий номер> <На главную страницу>


©  Alex Vanin         year 2002