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

Объявление интерфейса

public interface My_int {

static final string str = «Тест интерфейса»;

string str1 = «Проба»

public int My_met (int switch);

}

//Реализация абстрактных методов интерфейса в классе

сlass TestInt implements My_int

{public int My_met (int switch)

{if (switch= = 0 ) return ( 0 )

else

return (switch*switch)}

public void f1 ( ) {…….}}

При переопределении методов можно использовать модификаторы native (метод, реализованный на другом языке программирования) или abstract, указывающий, что данный метод не реализуется, а просто объявляется в классе.

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

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

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

  1. Пример использования.

    1. Пример, демонстрирующий преимущества использования интерфейсов:

Рассмотрим пример представления товаров в зоомагазине, в котором, например, попугай является одновременно и птицей и товаром, как и другие продаваеиые объекты. Представим модели возможной реализации:

Слева представлена модель, в которой попугай является реализуемым товаром магазина – класс Tparrot (слева, через базовый класс Tbird и интерфейс Product, справа используются только классы – линные цепочки неэффективных наследований:

public class Tbird

{// общее действие для //всех птиц, методы

//с реализацией

public void feed ( )

{………..};

..

public interface Product

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

//определение цены на товар

{ public void setPrice (float thePrice);

// продажа 1 единицы товара

public void sell ( );

Public void buy(short theQuatity,

float theWholeSalePrice); }

// Реализация интерфейсов в объявлении класса.

public class Tparrot extends Tbird imlement Product

{private final float KDailyFoodPrice = 0.60;

static short fPrice;

static float fAccjount;

short final fInvetory;

//определение цены на товар

public void setPrice (float thePrice)

{fPrice = thePrice; }

//метод, фиксирующий изменения при продаже птицы

public void sell ( )

{fInventory--; // удаление 1 птицы из общего остатка на складе;

fAcoonnt +=fPrice; // добавление ее стоимости на приходный счет

}

//метод, фиксирующий изменения при покупке птицы

public void buy(short theQuality, float theWholeSalePrice)

{fIwentory+= theQuality; // добавление количества закуп. птиц к общему //остатку

fAccount= theQuality * the WholeSalePrice;} //оплата стоим. с расходного //счета

//метод, определяющий расходы за ежедневное кормление

public void feed ( )

{fAccount -=fInventory * kDailyFoodPrice;

// Оплата за ежедневное питание считывается с расходного счета

supper.feed ( ) }

}