Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Т_05_ Абстрактные классы и интерфейсы_JAVA.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
129.54 Кб
Скачать
    1. Пример реализации интерфейсов :

Рассмотрим фрагмент программы выдающий информацию о товарах продаваемых в магазине: книга –основной товар, мелкие животные и птицы – вспомогательный товар.

В программе реализуется иерархия классов, разработанная с учетом общности экземплярных переменных и методов классов.

interface TAbstractProduct

// объявляем абстрактные методы, общие для всех объектов,

//но реализуемые, в дальнейшем, по разному

{ public float getPrice(); //получить цену

public String getPrintableType(); //получить название продукции

}

//расширяем методы спецификой живой продукции (название корма)

interface TLiveProduct extends TAbstractProduct //живой продукт, //расширение интерфейса

{ public String getFood(); //получить название корма

}

//расширяем методы спецификой основной продукции (книги)

interface TGeneralProduct extends TAbstractProduct //основной продукт

{ //расширение интерф.

public short itemsPerCase(); }

//частичная реализация методов интерфейса

abstract class TSmallPet implements TLiveProduct

{ //класс абстрактный, т.к. не реализует метод public String getFood();

float fPrice;

TSmallPet(float thePrice) { fPrice = thePrice; }

public float getPrice() { return fPrice; }

}

class THamster extends TSmallPet //реализация абстрактного класса

{ THamster(float thePrice)

{ super(thePrice); } //вызов конструктора базового класса

public String getFood() //реализация метода интерфейса для //хомячков

{ return "Зерно"; }

public String getPrintableType()

{ return "Золотистый хомячок"; }

}

class TParrot extends TSmallPet //реализация баз. класса и не реализованных

{ //методов интерфейса

TParrot(float thePrice)

{ super(thePrice); } //вызов конструктора базового класса

public String getFood() //реализация метода интерфейса для попугаев

{ return "Зерно и овощи"; }

public String getPrintableType()

{ return "Попугай"; }

}

class TBook implements TGeneralProduct

{ private static final short kItemsPerCase = 144;

float fPrice; String fTitle;

TBook(float thePrice, String theTitle) //конструктор

{ fPrice = thePrice; fTitle = theTitle; }

public float getPrice() //реализация метода доступа к переменной

{ return fPrice; }

public String getPrintableType()

{ return "Книга называется - " + fTitle; }

public short itemsPerCase()

{ return kItemsPerCase; }

}

public class TStore

{ static THamster theHamster;

static TParrot theParrot;

static TBook theBook;

public static void init() //статический метод инициализации //объектов всех объявленных классов

{

theHamster = new THamster((float) 4.95);

theParrot = new TParrot((float) 17.99);

theBook = new TBook((float) 14.95, "Как кормить птиц");

}

public static void main(String argv[])

{ init(); //создание и инициализация объектов стат.методом

getInfo(theHamster); //передача методу объекта произ, затем //использование

getInfo(theParrot); //реализаций методов интерфейсов

getInfo(theBook);

}

public static void getInfo(TAbstractProduct theItem) //ссылка на баз интерфейс //подменяется ссылкой на реализованный объект для //которого все данные реализованы

{

System.out.println("Наименование товара - " + theItem.getPrintableType() + ".");

System.out.println("Цена " + theItem.getPrice() + " за шт.");

}

}

/*результат работы:

наименование товара - Золотистый хомячек.

Цена 4.95 за шт.

Наименование товара - Попугай.

Цена 17.99 за шт.

Наименование товара - Книга называется  - Как кормить птиц.

Цена 14.95 за шт.

*/

11