Что такое Java Операции присваивания Массивы Java-файлы Работа с массивами Классы-адаптеры Изображение и звук Анимация Подпроцессы-демоны Печать в Java Работа по протоколу TCP Сервлеты Java на сервере Методы улучшения визуализации

Наследование

Вторым фундаментальным свойством объектно-ориентированного подхода является наследование (первый - инкапсуляция). Классы-потомки имеют возможность не только создавать свои собственные переменные и методы, но и наследовать переменные и методы классов-предков. Классы-потомки принято называть подклассами. Непосредственного предка данного класса называют его суперклассом. В очередном примере показано, как расширить класс Point таким образом, чтобы включить в него третью координату z.

Класс Properties

Класс ' Properties расширяет класс Hashtabie . Он предназначен в основном для ввода и вывода пар свойств системы и их значений. Пары хранятся в виде строк типа string . В классе Properties два конструктора:

Properties () — создает пустой объект;

Properties (Properties default) — создает объект с заданными парами свойств default .

Кроме унаследованных от класса Hashtabie методов в классе Properties есть еще следующие методы.

Два метода, возвращающих значение ключа-строки в виде строки:

Метод setProperty(String key, String value) добавляет новую пару, если ключа key нет, и меняет значение, если ключ key есть.

Метод load(Inputstream in ) загружает свойства из входного потока in .

Методы list(PrintStream out) И list (PrintWriter out) выводят свойства в выходной поток out.

Метод store (OutputStream out, String header) выводит свойства в выходной поток out с заголовком header .

Очень простой листинг 6.4 и рис. 6.2 демонстрируют вывод всех системных свойств Java.

Листинг 6.4. Вывод системных свойств 

class Prop{

  public static void main(String[] args){

  System.getProperties().list(System.out); 

 } 

}

Примеры классов Vector, Stack, Hashtabie, Properties показывают удобство классов-коллекций. Поэтому в Java 2 разработана целая иерархия коллекций. Она показана на рис. 6.3. Курсивом 'записаны имена интерфейсов. Пунктирные линии указывают классы, реализующие эти интерфейсы. Все коллекции разбиты; на три группы, описанные в интерфейсах List, Set и Map.  

Рис. 6.2. Системные свойства



Рис. 6.3. Иерархия классов и интерфейсов-коллекций

Примером реализации интерфейса List может служить класс Vector , примером реализации интерфейса мар — класс Hashtabie .

Коллекции List и set имеют много общего, поэтому их общие методы объединены и вынесены в суперинтерфейс Collection .

Посмотрим, что, по мнению разработчиков Java API, должно содержаться в этих коллекциях.

Оператор package

Первое, что может появиться в исходном файле Java - это оператор package, который сообщает транслятору, в каком пакете должны определяться содержащиеся в данном файле классы. Пакеты задают набор раздельных пространств имен, в которых хранятся имена классов. Если оператор package не указан, классы попадают в безымянное пространство имен, используемое по умолчанию.

Каталог, который транслятор Java будет рассматривать, как корневой для иерархии пакетов, можно задавать с помощью переменной окружения СLASSPATH. С помощью этой переменной можно задать несколько корневых каталогов для иерархии пакетов (через ; как в обычном PATH).

Трансляция классов в пакетах

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


Warning: require_once() [function.require-once]: Filename cannot be empty in /pub/home/andrekon21/obuvoptom96/authority7.php on line 5

Fatal error: require_once() [function.require]: Failed opening required '' (include_path='.:/usr/local/php5.2/share/pear') in /pub/home/andrekon21/obuvoptom96/authority7.php on line 5