Главная » Java, Структуры данных и алгоритмы » Реализация интерфейса Java

0

Основным структурным элементом Java, лежащим в основе ИПП, является интерфейс. Интерфейс представляет собой совокупность заголовков методов без их реализации и данных. Другими словами, методы интерфейса всегда пусты. Если в классе реализуется интерфейс, в нем реализуются и все методы, объявленные в интерфейсе. Таким образом, интерфейс поддерживает наследование типа конкретизации, при котором требуется указание всех наследуемых методов.

Предположим, что необходимо составить перечень антикварных вещей, разделив их на группы различных типов на основании характеристик вещей. Например, некоторые из этих предметов можно определить как продаваемые, в этом случае они будут реализовывать интерфейс Sellable, представленный во фрагменте кода 2.7.

Г* Интерфейс объектов, которые могут быть проданы. 7 /** описание объекта 7 Г* стоимость по прейскуранту в центах 7 /** наименьшая приемлемая цена в центах 7

/** Интерфейс объектов, которые могут быть проданы. 7 public interface Sellable {

/** описание объекта 7 public String description(); Г* стоимость по прейскуранту в центах 7 public int listPrice();

/** наименьшая приемлемая цена в центах 7 public int lowestPrice();

}

Фрагмент кода 2.7. Интерфейс Sellable

После этого может быть выделен частный класс Photograph, представленный во фрагменте кода 2.8, который реализует интерфейс Sellable, что показывает возможность продажи любого из объектов класса Photograph. Этот класс описывает объекты, для которых выполняются все методы интерфейса Sellable. Кроме того, в нем также описан частный метод isColor, характерный для объектов класса Photograph.

/** Класс фотографий, которые могут быть проданы 7 public class Photograph implements Sellable {

private String descript; // описание данной фотографии private int price; // устанавливаемая цена private boolean color; // true, если фото не цветное

public Photograph(String desc, int p, boolean с) { //конструктор descript = desc; price = p; color = c;

}

public String descriptionQ { return descript; } public int listPriceQ { return price; } public int lowestPriceQ { return price/2; } public boolean isColorQ { return color; }

}

Фрагмент кода 2.8. Класс Photograph, реализующий интерфейс Sellable

Также можно выделить из нашей Коллекции группу транспортируемых предметов. Для таких объектов опишем интерфейс; представлейетый* фрагментом кода 2,9.

/** Интерфейс транспортируемых объектов 7

public interface Transportable {

/** вес в граммах 7

public int weight();

Г* опасность перевозки объекта 7

public boolean isHazardous

Фрагмент кода 2.9. Интерфейс Transportable

Далее опишем класс, представленный фрагментом кода 2.10, содержащий различные предметы старины, которые можно продавать, упаковывать и перевозить. Таким образом, класс Boxedltem будет реализовы- вать методы интерфейса Sellable и Transportable.

4 Зак 2456

Г* Класс объектов, которые можно продавать, упаковывать * и перевозить. 7

public class Boxedltem implements Sellable, Transportable { private Atring descript; // описание объекта private int price; // цена по прейскуранту в центах private int weight // вес в граммах

private boolean haz // true, если перевозка объекта опасна 7 private int height=0 // высота упаковки в сантиметрах private int width=0 И ширина упаковки в сантиметрах private int depth=0 // длина упаковки в сантиметрах /** Конструктор 7

public Boxedltem(String desc, int p, int w, boolean h) { descript = desc; price = p; weight = w; haz = h;

}

public String description() { return descript; } public int listPrise() { return price; } public int lowestPrice() { return price/2; } public int weight() { return weight; } public int isHazardous() { return haz; } public int insuredValue() { return price*2; } public int setBox(int h, int w, int d) { height = h; width = w; depth = d;

}

}

Фрагмент кода 2.10. Класс Boxedltem

Класс Boxedltem демонстрирует еще одну особенность классов и интерфейсов в Java — классы могут реализовывать несколько интерфейсов, что обеспечивает значительную гибкость при работе с классами, которые должны соответствовать многочисленным ИПП.

Источник: Гудрич М.Т. Г93 Структуры данных и алгоритмы в Java / М.Т. Гудрич, Р. Тамассия; Пер. с англ. A.M. Чернухо. — Мн.: Новое знание, 2003. — 671 е.: ил.

По теме:

  • Комментарии