Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ МИР.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
547 Кб
Скачать
☆

47 Новые пакеты Java и особенности Java 1.1

Java.beans – предназначен для создания и использования встраиваемых программных компонент многократного использования.

Java.rmi – определены классы и интерфейсы, к-рые используются для удаленного вызова методов.

Java.security – содержаться классы и интерфейсы, к-рые явл-ся фундаментальными абстракциями эл-тов криптографии. Сюда входят закрытые и открытые ключи, сертификаты, подтверждение о получении цифр. подписей.

Java.sql – содержит JDBC, вкл-щие классы и интерфейсы, к-рые позволяют программам на Java посылать запросы к БД и получать ответы.

Java.text – классы и интерфейсы данного пакета исп-ся для орг-ии многоязыковой поддержки, т.е. классы для представления даты, времени, чисел и текстовых сообщений в том стиле, к-рый принят в данной, конкретной местности.

Самым большим усовершенствованием языка Java явл-ся встроенные классы, т.е. воз-ть опред-ть классы в кач-ве членов других классов, подобно методам и переменным.

48 Встроенные классы и интерфейсы в Java

4 группы встроенных классов:

1. встроенные классы и интерфейсы верхнего уровня;

2. классы-члены;

3. локальные классы;

4. анонимные классы.

Встроен. классы и ин-сы верхнего ур-ня явл-ся совершенно такими же, как обычные классы, за искл-ем того, что д/удобства они вложены в др. класс или интерфейс; также классы и ин-сы должны объявляться с модификатором static.

В объявлении ин-са м. не указывать данный модификатор, т.к. все ин-сы не явно объявлены как static.

public class LinkedList{

public interface Linkable {

public Linkable GetNext();

public void SetNaext(Linkable node);

}

Linkable head;

public void insert (Linkable node){}

public remove (Linkable node){}

}

Далее опред-ся класс, реализующий встроенный ин-с, имя встроенного класса записывается след. образом: сначала пишется имя включаемого класса, затем ч/з точку имя встроенного класса или ин-са.

class LinkableInteger implements

LinkedList Linkable {

int i;

public LinkableInteger (int i){this.i=i;}

LinkedList Linkable next;

public LinkedList.Linkable GetNext {return next;}

public void setNext (LinkedList.Linkable node){next=node;}

}

Если откомпилировать класс LinkedList при условии, что данный класс содержит только свое описание, то будет создано 2 ф-ла:

  1. Linkedlist.class

  2. LinkedList$linkable.class, к-рый создается д/встроенного ин-са.

49 Классы-члены в Java

Если встроен-е классы исп-ся лишь д/удобства, то классы-члены также встраиваются, при этом они не объявляются как static и их вложенность играет существенную роль.

Особенности классов-членов:

  1. Каждый экземпляр класса-члена внутренне связан с определенным экземпляром класса, где он определен или содержится.

  2. Методы класса-члена могут неявным образом ссылаться на переменные этого класса также как и на переменные включающего класса в т.ч. объявленного как private.

Классы-члены прим-ся вместо встроенных классов верхнего ур-ня там, где необходим доступ к переменным экземпляра включающего класса или где каждый экземпляр вспомогат. класса д.б. связан с определенным экземпляром включающего класса. Такое соответствие соблюдается автоматически.

Предположим, что в классе LinkedList необх-мо организовать циклическую обр-ку эл-тов связанного списка с помощью класса Enumeration. Это легко сделать используя классы-члены.

import java.util.+;

public class LinkedList {

public interface Linkable {...}

Linkable head

public void addToHead (Linkable node) {}

public Linkable removeHead () {...}

}

Next метод возвращает объект Enumeration для данного объекта Linkedlist, при этом никакой из объектов LinkedList не передается в явном виде

// продолжение программы

public Enumeration enumerate () {

return new Enumerator (); }

// Enumerator – класс член, описывающий ин-с LinkedList

private class Enumeration implements

Enumeration {

Linkable current;

Public Enumerator () {current=head;}

…

} // Enumerator

} // LinkedList

Конструктор класса Enumerator не явно ссылается не переменную head включающего класса.

При компиляции класс член Enumerator будет откомпилирован в ф-л LinkedList$Enumerator.class.

Классы-члены могут использовать переменные, методы и даже классы, объявленные как private своего включающего класса. Включающий класс в свою очередь м. использовать закрытые переменные и методы тех классов, к-рые встроены в него.